Ответ 1
Вы определенно должны. В противном случае выполнение script не завершается. Настройка другого заголовка недостаточно для перенаправления.
После вызова заголовка функции перенаправления я должен вызвать exit или нет?
<?php // fileA
$urlFailToGoTo = '/formerror.php';
if (sth)
{
header(sprintf("Location: %s", $urlFailToGoTo));
exit(); //should I call exit() here? or return?
}
?>
Спасибо
Вы определенно должны. В противном случае выполнение script не завершается. Настройка другого заголовка недостаточно для перенаправления.
Вы должны, как объясняет @rgroli. Если вы не хотите беспокоиться о скобках, вы также можете вызвать header()
IN exit()
:
if(sth) exit(header("Location: http://example.com"));
Заголовок заголовка в HTTP/1.1 всегда требует абсолютного пути см. примечание здесь.
Примечание: Это не взлом, так как код выхода используется только в том случае, если этот параметр является целым числом, а header()
- void (он выходит с кодом = 0, нормальный выход). Посмотрите на него как на функцию exit_header()
, как это должно быть после заголовка Location
.
Как правило, хорошая практика для exit;
(обратите внимание - это ключевое слово, поэтому вам не нужно ()
) после отправки заголовка Location:
, так как браузеры должны перенаправляться на новую страницу и так далее выполнение текущего script обычно нежелательно.
Если у вас нет кода (PHP или HTML) под заголовком, вам не нужно.
выход - плохое кодирование.
Если вы когда-либо разрабатываете большой проект и хотите создать тестовые модули PHP Unit, выход вас испортит.
выход завершает работу script и ваш текущий тест! нет способа восстановить тест и сказать, что он потерпел неудачу или нет...
упорядочивайте свой код так, что нет выхода, а script заканчивается естественно, если вы используете перенаправление...