За последние 24 часа нас посетили 119933 программиста и 2992 робота. Сейчас ищут 1335 программистов ...

Как вызвать функцию...

Тема в разделе "PHP для новичков", создана пользователем asm1972, 28 сен 2014.

  1. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Что мешает злому сео просто делать такие ссылки на индекс?
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в самом урле не будет ключевых слов же ж

    а так - будут.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Имхо, это фигня. Никто не помешает запилить такую ссылку на любом ресурсе, где посетителей больше чем админов на порядки. А как же новостные порталы? Их банить за новости о том, что где-то накрыли студию детской порнографии, потому что у них эти слова попали в заголовок и адрес? Соль в том, что 404 пугает юзверя. Его вообще пугает все неожиданное и непонятное. А 404 даже сегодня что-то странное и пугающее.

    Как вариант можно отдавать 404 с JS-ом, который перенаправит браузер на индекс. А поисковую систему не перенаправит, потому что пауки не могут в JS.
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Ты походу не вкурил схему. Ссылка с ключами в урле ведёт на страницу с кодом 200. И всё. Это приговор. Должно быть 404 если страницы нет. Если 200 то значит ссылка правильная и отдан тот контент, который запрошен - гей-порно с котиками.
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    404 страница не обязана быть пустой. Чтобы не пугать юзера, можно показывать страницу в дизайне сайта. Главное, чтобы в заголовке был Not Found.
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    И что мешает туда закинуть JS-ку, которая сделает перенаправление на индекс уже со стороны клиента? Для паукана там будет код 404 и нот фаунд. Для клиента там будет индекс.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    можно. но обычно это злит людей. =)
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Такая страница не была найдена, к моменту, когда вы дочитаете сообщение, вы будете перенаправлены на главную.
     
  9. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    У меня PHP 5.3... Эта функция, наверное, самый простой вариант.

    Спасибо всем!

    А почему не катит вариант с перенаправлением на несуществующую страницу 404.html? Из за статуса 302?
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Обнови похапе
     
  11. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Хотя можно просто тупо инклудить 404-ю, во всех случаях, наверное.
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А ты там не отдавал 302 статус :)
     
  13. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Это, скорее всего, статус по умолчанию, который где-то хранится... Исправить бы его, временно, а затем снова установить. Заголовок Apacha, который он шлет или пхп-шный?
     
  14. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Проверь.
     
  15. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    <?php header("HTTP/1.0 404 Not Found"); ?> и нет проблем в любой php
     
  16. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Вообще, если это можно сделать только через конфиг Apacha (он же лог-то ведёт), то и смысла нет: хостеры не дадут, скорее всего, этим воспользоваться...

    Добавлено спустя 2 минуты 25 секунд:
    Придётся после этого ещё и exit; дописывать, оставаясь при этом на запрошенном адресе...
     
  17. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Да, exit() - это очень сложная функция. А можно и не прописывать, а просто вывести, что нужно при несуществующей странице
     
  18. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    В смысле параметров?... :) Нужно почитать, наверное.

    Добавлено спустя 20 минут 6 секунд:
    Вот рабочий вариант:
    В скрипте:
    Код (Text):
    1.  
    2.   if(!isset($apps[$words[0]])) {
    3.     header('Refresh:0; /QUERY_ERRORS.php',false,'404');
    4.     exit;
    5.   }
    Результат в access.log
    Код (Text):
    1.  
    2. 127.0.0.1 - - [01/Oct/2014:21:10:39 +0400] "GET /bla-bla-bla HTTP/1.1" 404 138
    3. 127.0.0.1 - - [01/Oct/2014:21:10:39 +0400] "GET /QUERY_ERRORS.php HTTP/1.1" 200 266
    4. 127.0.0.1 - - [01/Oct/2014:21:10:56 +0400] "GET /favicon.ico HTTP/1.1" 404 138
    5. 127.0.0.1 - - [01/Oct/2014:21:10:56 +0400] "GET /QUERY_ERRORS.php HTTP/1.1" 200 266
    Если в 404.php теперь сделать Refresh с задержкой на пару секунд, то можно возвращаться на индекс автоматом.
    Ваше мнение - стоит ли?..
     
  19. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Зачем затылок через попу чесать?
    Код (Text):
    1.  
    2.  if(!isset($apps[$words[0]])) {
    3.      header("HTTP/1.0 404 Not Found");
    4.      require("404.php");
    5.      die;
    6.   }
    Всё :)))
     
  20. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Чтобы не оставаться на запрошенном адресе, которого не существует.

    Можно Refresh-нуть со страницы ошибок на индекс.
     
  21. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Зачем? Дайте пользователю полюбоваться, что он не туда попал, а он, не дурак уж, нажмёт на домик :)

    Добавлено спустя 1 минуту 26 секунд:
    Вот такую ситуацию мне один хороший сеошник заказывал исправлять в CMS... И так хотите перебросить пользователя на индекс - есть ещё meta refresh в html
     
  22. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    А что плохого в том, что страница ошибки найдена?..

    Кстати, если в 404.php написать перенаправление на главную через хедер локатион (рефреш результатов не даёт), то результат такой:
    Код (Text):
    1.  
    2. 127.0.0.1 - - [01/Oct/2014:23:08:06 +0400] "GET /favicon.ico HTTP/1.1" 404 138
    3. 127.0.0.1 - - [01/Oct/2014:23:08:06 +0400] "GET /QUERY_ERRORS.php HTTP/1.1" 302 -
    4. 127.0.0.1 - - [01/Oct/2014:23:08:06 +0400] "GET / HTTP/1.1" 200 213
    Это не нормально?.. Вроде выдаёт статус 404 для запршенной, затем редирект и статус ОК для индекса... Пусть уж пользователь на Главную любуется, мож чего полезного для себя найдёт...

    Если разобраться логически, то вроде всё в норме.

    404.php можно, например, переименовать в QUERY_ERRORS.php... Для наглядности, так сказать. Ресурс не найден - да и всё.
     
  23. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Вот немного другой вариант:

    QUERY_ERRORS.php:
    Код (Text):
    1.  
    2. header("HTTP/1.1 404 Not Found");
    3. header('Refresh:0; http://mysite');
    access.log:
    Код (Text):
    1.  
    2. 127.0.0.1 - - [02/Oct/2014:00:03:20 +0400] "GET /bla-bla-bla HTTP/1.1" 404 138
    3. 127.0.0.1 - - [02/Oct/2014:00:15:12 +0400] "GET /QUERY_ERRORS.php HTTP/1.1" 404 -
    4. 127.0.0.1 - - [02/Oct/2014:00:03:20 +0400] "GET / HTTP/1.1" 200 213
    Меня интересует вот эта строка:
    Код (Text):
    1.  
    2. 127.0.0.1 - - [02/Oct/2014:00:15:12 +0400] "GET /QUERY_ERRORS.php HTTP/1.1" 404 -
    Какой правильный статус в ней должен быть: 200, 404 или какой другой?..

    Добавлено спустя 25 минут 48 секунд:
    Вариант без использования дополнительного файла ошибок:
    Код (Text):
    1.  
    2.   if(!isset($apps[$words[0]])) {
    3.     header("HTTP/1.0 404 Not Found");
    4.     header('Refresh:0; '.DIRECTORY_SEPARATOR); // Или на любую другую нужную страницу
    5.     exit;
    6.   }
    Результат в access.log:
    Код (Text):
    1.  
    2. 127.0.0.1 - - [02/Oct/2014:00:30:00 +0400] "GET /bla-bla-bla HTTP/1.1" 404 138
    3. 127.0.0.1 - - [02/Oct/2014:00:30:00 +0400] "GET / HTTP/1.1" 200 213
    4. 127.0.0.1 - - [02/Oct/2014:00:30:25 +0400] "GET /favicon.ico HTTP/1.1" 404 138
    5. 127.0.0.1 - - [02/Oct/2014:00:30:25 +0400] "GET / HTTP/1.1" 200 213
    6. 127.0.0.1 - - [02/Oct/2014:00:30:58 +0400] "GET /no_such_file.php HTTP/1.1" 404 138
    7. 127.0.0.1 - - [02/Oct/2014:00:30:58 +0400] "GET / HTTP/1.1" 200 213
    .htaccess
    Код (Text):
    1.  
    2. RewriteEngine on
    3.  
    4. RewriteBase /
    5.  
    6. RewriteCond %{REQUEST_URI}       ^/$|^/index.php$
    7. RewriteRule ^.*$ index.php?words=индекс        [L,QSA]
    8.  
    9. RewriteCond %{REQUEST_FILENAME} !-f
    10. RewriteCond %{REQUEST_FILENAME} !-d
    11. RewriteRule ^(.*)$ index.php?words=$1          [L,QSA]
    Работает для любого не найденного файла или каталога.

    Последний вариант - допустим?.. Можно использовать?

    Гуру, подскажите! :)
     
  24. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
  25. asm1972

    asm1972 Новичок

    С нами с:
    28 сен 2014
    Сообщения:
    23
    Симпатии:
    0
    Всем спасибо!