В теле php-страницы выдать 404 ошибку, если неверные get-параметры

usr-php

Новичок
Добрый день!
Есть сайт на 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.

Ниже даю шаблон моей страницы
HTML:
<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>
 

jonjonson

Охренеть
Что бы отдать нужный заголовок.
Только нужно проверять наличие параметров до выдачи html. До тега <html>
С подробностями реализации вам придётся разобраться самому.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Код обработчик вашего запроса должен быть ДО любого вывода в браузер, иначе у вас будет ошибка с заголовками, как написал @jonjonson

Я бы посоветовал почитать, посмотреть как это сделано в самых простых фреймворках, будет гораздо лучше и удобнее потом поддерживать проект.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
На память slim, silex, или написать велосипед подобный https://github.com/banago/simple-php-website

Последнее как раз твой случай, там все очень упрощенно сделано.
 
Сверху