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

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

70
задан Your Common Sense 24 August 2010 в 08:25
поделиться

4 ответа

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

76
ответ дан 24 November 2019 в 13:24
поделиться

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

20
ответ дан 24 November 2019 в 13:24
поделиться

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

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

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

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

29
ответ дан 24 November 2019 в 13:24
поделиться

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

8
ответ дан 24 November 2019 в 13:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: