Offtopic: Стоит ли использовать die() и exit()?

Offtopic: Стоит ли использовать die() и exit()?

Offtopic
Никогда над этим не задумывался, но вызов любой из этих функций завершет выполнение сценари, причем включая не только пхп, но и любой хтмл...
Очень часто встречаются такие конструкции:
PHP:
$f = fopen(...) or die( "бла-бла-бла" );
не спорю - это хорошо.
Но если обработка формы и вывод её результатов производятся в одном сценарии приблизительно такого вида:
-------------------
PHP:
<?
// Здесь обработка формы...
?>
А вот здесь вывод результатов
-------------------
И если произойдет какая-нибудь ошибка в <? ... ?>, то пользователь в лучшем случае будет созерцать сообщение об ошибке на каком-нибудь фоне. И станет ли он(пользователь) любоваться этим зрелищем?..
Может я в чем-то неправ - поправьте? Всем ответившим огромное спасибо....
 
использовать данные функции стоит

Никогда над этим не задумывался, но вызов любой из этих функций завершет выполнение сценари, причем включая не только пхп, но и любой хтмл...
причем html к php ? что - то ты не того начитался...

пользователь в лучшем случае будет созерцать сообщение об ошибке на каком-нибудь фоне
как сделаешь, так и будет...

И станет ли он(пользователь) любоваться этим зрелищем?..
сам, вчитайся, :)
????
 
nofx
Я к тому, что в некоторых учебниках приводят подобные примеры, которые в случае ошибки, выдадут сообщение о ней, оставив пользователя на этой же странице....
 

zerkms

TDD infected
Команда форума
Loshadka

делаю функцию message_die () и юзаю её вместо die, в неё передаю необходимую информацию и отображаю в крсивом виде, в котром пользовтаелю будет предложены несколько вариантов выхода, а ошибка будет написана в стиле сайта + на понятом юзвере языку.

зы: идея + реализация содраны с phpbb. подробности смортеть в нём...
 

lucas

Guest
И если произойдет какая-нибудь ошибка в <? ... ?>, то пользователь в лучшем случае будет созерцать сообщение об ошибке на каком-нибудь фоне. И станет ли он(пользователь) любоваться этим зрелищем?..
Я так понимаю, что у тебя страница состоит из каши PHP + HTML, и поэтому сообщение об ошибке на фоне разлезшегося дизайна смотрится по меньшей мере странно.

(Хотя, с другой стороны, сообщить об ошибке на фоне последствий этой ошибки -- очень убедительно :D.)

Итак, этой проблеме есть решение и костыль:

1. Решение -- перейти на хоть какие-то шаблоны.
Можно даже на ту же кашу PHP + HTML, лишь бы получение данных (то бишь открытия файлов, работа с БД и т. д.) происходило в одном скрипте, который будет инклудить ([m]include_once[/m]) шаблон, только выводящий данные.

2. Костыль -- включить буферизацию вывода ([m]ob_start[/m]) в начале скрипта и, в случае возникновения ошибки, отключать буферизацию ([m]ob_end_clean[/m]) и выводить сообщение об ошибке.
Если же скрипт закончил работу успешно, получать содержимое буфера ([m]ob_get_clean[/m]) и вывести в браузер его.
 

Sleeper

Guest
Так же можно перебросить пользователя на заранее подготовленную страницу с описанием того, что юзер должен видеть об этой ошибке.
 

voland

Guest
У меня например верх и низ сайта инклюдяться. Если у тебя так же то можно при сбое их проинклюдить до вывода ошибки...
if($f) {include(top);ERROR_MESSAGE;include(tail);die;}

Я забил номера ошибок в функцию, и при вызове функции у меня происходит примерно это :)

Может и не оптимально, но ногами чур не пинать :)
 

Sleeper

Guest
и что будет если до этого они уже инклудидлись?
 

voland

Guest
Хм... Советуя я об этом я не подумал. У меня просто сначала собираеться страница и весь код "вверху", а вывод ниже.

З.Ы. Кстати говоря если ТАЙЛ инклюдиться внизу, то можно из моего ифа выкинуть ТОП
1.вывод ошибки
2. инклюд ТАЙЛ
3. ДАЙ

Тогда так :)
 

Sleeper

Guest
все же это очень кастрированный варант.
Только для случая когда вся обработка идет раньше.
иначе если ошибка случается в ходе вывода чего-то, то дизайн все едино плывет.
Так что наверное лучше при ошибке или перенаправлять пользователя куда-нить или извращаться так, чтобы ошибки не портили дизайн.
буферизация, конечно, тоже решение, но почему-то оно мне не нравится. Хотя может потому, что я ею вообще никогда не пользовался и немного опасаюсь, как всего неизвестного.
 
All
Всем огромное спасибо за ответы...
lucas
Спсибо за совет:
который будет инклудить (include_once) шаблон, только выводящий данные
Не догадался... У меня каждая страница - это таблица, её "верх" и "низ" лежат в отдельных файлах... Их я и присоединяю...
------------------------------------------------------------------------
Возник новый вопрос: Стоит ли вообще сообщать пользователю об ошибках? Или лучше, вообще, сделать так, чтобы практически любая ошибка "корректно" обрабатывалась самим сценарием, т.е. если происходит ошибка, то сценарий самостоятельно пытается её исправить, например, сделав рефреш самого себя? Кстати в пхп есть что-нить подобное try и catch в C++?
 

Фанат

oncle terrible
Команда форума
в 5 есть

Сообщать об ошибках пользователю стоит.
Но не вываливая, естественно, весь текст, а просто информируя, что произошла ошибка.
это если внутренняя.
 
Фанат
А стоит ли сейчас ставить пятый пхп, говорят, что у таких продуктов нужно дождаться, пока версия будет минимум x.3.x?

Сообщать об ошибках пользователю стоит.
И, сообщив об ошибке, лучше будет сразу перенаправить пользователя куда-то, или дать ему на выбор пару ссылок?
 

Фанат

oncle terrible
Команда форума
А стоит ли сейчас ставить пятый пхп
куда?
пока версия будет минимум x.3.x?
врут
И, сообщив об ошибке, лучше будет сразу перенаправить пользователя куда-то
ты сам-то понял что сказал?
а если его окликнули и он отвернулся?
 
Фанат
Себе домой...
А насколько врут, т.е. начиная с какой версии его можно не опасаясь глюков использовать?
а если его окликнули и он отвернулся?
Значит при ошибке:
1. Информируем пользователя о случившемся.
2. Даем ему какую-нить ссылку, например назад....
Видимо так?
 

Фанат

oncle terrible
Команда форума
ради бога. если разработка делается исключтельно для дома.
А насколько врут,
на две десятых.
я думаю, 5.1 будет стоять у всех хостеров. 5.0.4 - у половины
Видимо, так.

Завтисит от ошибки.
Собственно, в норимальном дизайне, особенной ссылки и не надо.
пойдет сам куда захочет.
 

Фанат

oncle terrible
Команда форума
Топики на этом форуме не закрывают. Можно было бы уже и разобраться.
Возможно, у кого-то будут еще полезные и интересные мысли.
 
Сверху