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

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

<?php // fileA $urlFailToGoTo = '/formerror.php'; if (sth) { header(sprintf("Location: %s", $urlFailToGoTo)); exit(); //should I call exit() here? or return? } ?> 

спасибо

Solutions Collecting From Web of "php. Должен ли я вызвать exit () после вызова заголовка Location:?"

Вы определенно должны. В противном случае выполнение скрипта не прекращается. Установка другого заголовка недостаточно для перенаправления.

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

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

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

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

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

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

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

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

exit завершает сценарий и ваш тестовый тест! нет способа восстановить тест и сказать, если он потерпел неудачу или нет …

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