Php. Должен ли я вызвать exit() после вызова заголовка Location:?

После вызова заголовка функции перенаправления я должен вызвать exit или нет?

<?php // fileA
$urlFailToGoTo = '/formerror.php';

if (sth)
{
   header(sprintf("Location: %s", $urlFailToGoTo));
   exit(); //should I call exit() here? or return?
}

?>

Спасибо

Ответ 1

Вы определенно должны. В противном случае выполнение script не завершается. Настройка другого заголовка недостаточно для перенаправления.

Ответ 2

Вы должны, как объясняет @rgroli. Если вы не хотите беспокоиться о скобках, вы также можете вызвать header() IN exit():

if(sth) exit(header("Location: http://example.com"));

Заголовок заголовка в HTTP/1.1 всегда требует абсолютного пути см. примечание здесь.

Примечание: Это не взлом, так как код выхода используется только в том случае, если этот параметр является целым числом, а header() - void (он выходит с кодом = 0, нормальный выход). Посмотрите на него как на функцию exit_header(), как это должно быть после заголовка Location.

Ответ 3

Как правило, хорошая практика для exit; (обратите внимание - это ключевое слово, поэтому вам не нужно ()) после отправки заголовка Location:, так как браузеры должны перенаправляться на новую страницу и так далее выполнение текущего script обычно нежелательно.

Ответ 4

Если у вас нет кода (PHP или HTML) под заголовком, вам не нужно.

Ответ 5

выход - плохое кодирование.

Если вы когда-либо разрабатываете большой проект и хотите создать тестовые модули PHP Unit, выход вас испортит.

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

упорядочивайте свой код так, что нет выхода, а script заканчивается естественно, если вы используете перенаправление...