На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
  
    > В теле php-страницы выдать 404 ошибку, если неверные get-параметры
      Добрый день!
      Есть сайт на php 5.6, хостинг на nic.ru (RU-CENTER) - структура каталогов на хостинге у nic.ru такая:
      mysite.ru\docs - в этой папке хранится весь сайт.
      mysite.ru\errordocs - хранятся html-страницы с ошибками, например mysite.ru\errordoc\404.html - страница, отображаемая пользователю, в случае возникновения 404 ошибки.

      Стоит задача, если в строке запроса передано неверное значение параметра, то необходимо выводить пользователю 404 ошибку т.е. страницу 404.html. Как это сделать?
      Например, если пользователь в браузере набрал неправильное значение параметра www.mysite.ru/art.php?art=unknownvalue выдавать 404-ошибку т.к. у параметра art значения могут быть только art1 и art2.

      Ниже даю шаблон моей страницы
      ExpandedWrap disabled
        <html>
        ...
        <body>
        ...
          <div id="page">
          ...
          <?
            $art  = $_GET['art'];
            switch($art) :
            default :
            if(isset($art) {
              //ЗНАЧЕНИЕ ПАРАМЕТРА НЕВЕРНО - необходимо вызвать 404-ошибки т.е. страницы errordoc/404.html на сервере
             } else {
              include_once('arts/artdef.php');
             }
             break;
         
             case ("art1");
             include_once('arts/art1.php');
             break;
         
             case ("art2");
             include_once('arts/art2.php');
             break;          
         
             endswitch;
              ?>      
          </div>
        ...
        </body>
        </html>
        Вместо комментов попробуй вставить кусок кода:

        ExpandedWrap disabled
          header("HTTP/1.0 404 Not Found");
          echo '<html>
                      <head>
                          <meta http-equiv="Refresh" content="0;url=http://mysite.ru/errordoc/404.html" />
                      </head><body></body>
                    </html>';'
          exit;

        Не тестил, но думаю нужно копать в эту сторону. Важно: чтобы функция header вызывалась до любого вывода, иными словами - нужно малеха переделать код, и не вставлять PHP код в середину страницы.
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0165 ]   [ 15 queries used ]   [ Generated: 28.03.24, 18:18 GMT ]