Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Как правильно отдавать ошибки 404, 403 и т.д.
Форумы портала PHP.SU » » Вопросы новичков » Как правильно отдавать ошибки 404, 403 и т.д.

Страниц (1): [1]
 

1. iflight - 10 Августа, 2011 - 21:42:12 - перейти к сообщению
Как правильно отдавать ошибки, чтобы при этом отображалась страничка апача с ошибкой и её можно было сменить через htaccess?
Отсылаю заголовок, например HTTP/1.1 404 Not Found, судя по тулсам хрома - браузер его принимает, но грузит страничку (точнее часть шаблона, с ошибками php).
Пока что сделал так:
PHP:
скопировать код в буфер обмена
  1. header('HTTP/1.1 404 Not Found');
  2.                 die ('404 Not Found');

но думаю это не лучший способ) Подскажите)
2. DeepVarvar - 10 Августа, 2011 - 21:56:01 - перейти к сообщению
CODE (html):
скопировать код в буфер обмена
  1. <?php header('HTTP/1.1 404 Not Found'); ?>
  2. <h1>и далее хтмл-страничка 404 во всей красе...</h1>

(Добавление)
Кстати вы путаете внутреннюю обработку с помощью пхп и обработку через .htaccess
Да собственно надо бы и там и там прописать как надо.
Главное чтобы визуально для пользователя не было разницы кто его бросил на 404..
3. iflight - 10 Августа, 2011 - 22:03:27 - перейти к сообщению
Ясно, спасибо) Надо класс написать в общем, чтоб занимался всеми этими делами)
4. DeepVarvar - 10 Августа, 2011 - 22:06:25 - перейти к сообщению
iflight пишет:
класс написать

Надо метод в контроллере просто дописать: если не найдено - на тебе 404.
А в .htaccess просто редирект на ту же статическую копию 404
5. iflight - 10 Августа, 2011 - 22:22:02 - перейти к сообщению
У меня контролер - программа, его методы функции программы, например users->login - авторизация, users->registration - регистрация и т.д. контроллеров несколько, в каждом принципе можно наткнуться на 404 ошибку как минимум, + сам класс, вызывающий нужный контроллер должен уметь 404 отдавать. Проще сделать класс который будет за все ошибки отвечать, еще и лог вести. Или это в корне не правильно?
6. DeepVarvar - 10 Августа, 2011 - 22:26:27 - перейти к сообщению
Ну как бы, контроллеру должны возвращать статус все модули, а он уже должен генерить 404
(Добавление)
По идее главный принцип - если ты повторяешь код несколько раз - значит неверно спланировал структуру.

Есть же обобщающие исключения: 404, аутенфикация, права доступа, системные настройки...
Вот это - априори должно быть в ядре.
7. iflight - 10 Августа, 2011 - 22:55:18 - перейти к сообщению
Ну у меня за основу вот это взято http://habrahabr[dot]ru/blogs/php/31270/ , правда многое изменено и дописано, пока вроде повторений нет, все нужное всегда можно вызвать из отвечающего за это класса, все классы вместе образует ядро, вот и думал дописать еще класс, занимающийся ошибками.
8. DeepVarvar - 10 Августа, 2011 - 22:57:17 - перейти к сообщению
А вот это уже дело ваше. Тут я и советовать не стану.
Каждый делает так как видит. Главное чтобы другой понял что там у вас происходит Закатив глазки
(Добавление)
По коду дела... Закатив глазки
9. PATCH - 10 Августа, 2011 - 23:01:32 - перейти к сообщению
Цитата:
Как правильно отдавать ошибки, чтобы при этом отображалась страничка апача с ошибкой и её можно было сменить через htaccess?


добавить в .htaccess

ErrorDocument 404 - ошибка и номер ошибки
/error/404.php - путь до нашего шаблона с ошибкой

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. ErrorDocument 404 /error/404.php
  3. ErrorDocument 403 /error/403.php
  4. ErrorDocument 401 /error/401.php
  5. ErrorDocument 500 /error/500.php
10. iflight - 10 Августа, 2011 - 23:19:32 - перейти к сообщению
DeepVarvar Я пока учусь, не хочется просто научиться неправильному)
PATCH Ага, это знаю, только это немного не то, что хотел узнать)

В общем то ответ получен)
11. DeepVarvar - 10 Августа, 2011 - 23:27:13 - перейти к сообщению
iflight я тоже не гуру.

 

Powered by ExBB FM 1.0 RC1