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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно отдавать ошибки 404, 403 и т.д.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
iflight
Отправлено: 10 Августа, 2011 - 21:42:12
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




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

но думаю это не лучший способ) Подскажите)
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 21:56:01
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. <?php header('HTTP/1.1 404 Not Found'); ?>
  2. <h1>и далее хтмл-страничка 404 во всей красе...</h1>

(Добавление)
Кстати вы путаете внутреннюю обработку с помощью пхп и обработку через .htaccess
Да собственно надо бы и там и там прописать как надо.
Главное чтобы визуально для пользователя не было разницы кто его бросил на 404..
 
 Top
iflight
Отправлено: 10 Августа, 2011 - 22:03:27
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




Ясно, спасибо) Надо класс написать в общем, чтоб занимался всеми этими делами)
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 22:06:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




iflight пишет:
класс написать

Надо метод в контроллере просто дописать: если не найдено - на тебе 404.
А в .htaccess просто редирект на ту же статическую копию 404
 
 Top
iflight
Отправлено: 10 Августа, 2011 - 22:22:02
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




У меня контролер - программа, его методы функции программы, например users->login - авторизация, users->registration - регистрация и т.д. контроллеров несколько, в каждом принципе можно наткнуться на 404 ошибку как минимум, + сам класс, вызывающий нужный контроллер должен уметь 404 отдавать. Проще сделать класс который будет за все ошибки отвечать, еще и лог вести. Или это в корне не правильно?
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 22:26:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну как бы, контроллеру должны возвращать статус все модули, а он уже должен генерить 404
(Добавление)
По идее главный принцип - если ты повторяешь код несколько раз - значит неверно спланировал структуру.

Есть же обобщающие исключения: 404, аутенфикация, права доступа, системные настройки...
Вот это - априори должно быть в ядре.
 
 Top
iflight
Отправлено: 10 Августа, 2011 - 22:55:18
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




Ну у меня за основу вот это взято http://habrahabr[dot]ru/blogs/php/31270/ , правда многое изменено и дописано, пока вроде повторений нет, все нужное всегда можно вызвать из отвечающего за это класса, все классы вместе образует ядро, вот и думал дописать еще класс, занимающийся ошибками.
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 22:57:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




А вот это уже дело ваше. Тут я и советовать не стану.
Каждый делает так как видит. Главное чтобы другой понял что там у вас происходит Закатив глазки
(Добавление)
По коду дела... Закатив глазки
 
 Top
PATCH
Отправлено: 10 Августа, 2011 - 23:01:32
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




Цитата:
Как правильно отдавать ошибки, чтобы при этом отображалась страничка апача с ошибкой и её можно было сменить через 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
 
 Top
iflight
Отправлено: 10 Августа, 2011 - 23:19:32
Post Id



Гость


Покинул форум
Сообщений всего: 119
Дата рег-ции: Март 2011  
Откуда: Россия, Сыктывкар


Помог: 2 раз(а)




DeepVarvar Я пока учусь, не хочется просто научиться неправильному)
PATCH Ага, это знаю, только это немного не то, что хотел узнать)

В общем то ответ получен)
 
 Top
DeepVarvar Супермодератор
Отправлено: 10 Августа, 2011 - 23:27:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




iflight я тоже не гуру.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB