[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Если не существует такого GET параметра
Страницы: 1, 2
Dno
killer8080

Так получаеться инклюдиться файл 404.php в индексный файл.


<html>
<
head>
Заголовки разве не тут? (Уже пришло 200 ОК)
</
head>
<
body>
$file = array('view', 'registration', 'main', 'add');
if (in_array($id, $file) && file_exists("view/$id.php"))
include "view/$id.php";
else
// А тут пытаемся 200 ОК уже поменять на 404.
header("HTTP/1.1 404 Not Found");
</
body>
</
html>


Цитата
Удобней её вынести в отдельный файл

Полностью согласен, есть файл 404.php и в .htaccess прописано ErrorDocument 404 /404.php.

То есть нужен код, если пришло значение GET которого нету в массиве пришли ответ 404 и выведи этот файл.
killer8080
Dno
естественно заголовки нужно выводить до контента
В index.php не должно быть html кода, это фронт контроллер, который решает какой контроллер нужно выбрать для обработки запроса. Хотя конечно архитектуры могут быть разными.
Почитай о патерне MVC.
Dno
Цитата
В index.php не должно быть html кода

Если речь идет о index файле, которую еще называют точкой входа, то там и так ни единого html кода. На данный момент вот весь его код:

define ('DNO',true);

// Подключение конфига
require_once "config.php";

// Подключение контроллера
require_once CONTROLLER;


Вот он и подключает другой index файл, который лежит в представлении/вид/view.

А там в свою очередь получаеться динамичный контаент:

// Но прямо сюда обратиться нельзя. Проверяем константу
defined (DNO) or die 'чтото типо доступ запрещен';
<
html>
<
head>
</
head>
<
body>
// PHP и HTML КОД
</body>
</
html>


Цитата
Почитай о патерне MVC.

Так вот и реализовываю этот MVC :)
Dno
Что-то у меня не получается. Может кто знает что я делаю не так?

Код пишу такой: (вырезано все лишнее)

// Список разрешенных файлов для подключения
$file = array('view', 'registration', 'main', 'add');

И $id = $_GET['id'];
// Если придет false отправь заголовок 404 и закончи работу скрипта.
<? if(!in_array($id, $file)) header("Status: 404 Not Found"); exit;?>
<!DOCTYPE html>
<
html lang='ru'>
<
head>
</
head>
<
body>
<
div class="main">
<? include 'view/inc/header.php'; ?>

<?
if(in_array($id, $file) && file_exists("view/$id.php")) include "view/$id.php" ?>
</div>
</
body>
</
html>


Т.е. при вводе несуществующего в массиве значения, ответа 404 не приходит.
Dno
Хотя если послать Location работает правильно, может я статус 404 неправильно посылаю?

Ааа ии да кстати скобки забыл. А то и так и так будет закончена работа скрипта.
<? if(!in_array($id, $file)) {header("Status: 404 Not Found"); exit;}?>
johniek_comp
Свернутый текст
ТС молодец, учится, не то что я. Сразу понимает все) + в карму такому новому пользователю!)


_____________
user posted image
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.