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