Зачем нужен exit после header("location: file.php")

Silverst

Писатель
Регистрация
23 Мар 2008
Сообщения
7
Реакции
2
Зачем нужен exit() после header("location: file.php"), если и так идет редирект после хедера и скрипт дальше не выполняется?

пример:

Код:
header("location: file.php");
exit();
 
Он указывает браузеру, что требуется перенаправление. Теперь браузер уже обратится к другой странице, которая указана в Location. Т.к. сразу произойдёт перенаправление, то не имеет смысла загружать всю текущую страницу, поэтому и ставят обычно exit. В общем, его можно и не ставить... ничего страшного не произойдёт, но это будут лишние действия и бесполезная нагрузка на сервер (т.к. придётся создать страницу, которая никому не нужна).

Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
уже читал эту тему, внятно так и не объяснили. В документации написано, что exit "Прекращает выполнение скрипта", а в той теме пишут, что прекращает загрузку. Т.е. exit прекращает загрузку, а header("location...") - нет, или как?
 
если я правильно понял, то скрипт, перед перенаправлением, полностью "читается".
EXIT же ставят для того, чтобы сэкономить время обработки и не "считывать" лишнее (то, что идет после location).
 
header - отсылает заголовок, а переходить или нет по адресу, указанному в header:Location..., решает браузер.

А зачем вам, отослав пользователя на другую страницу, дальше продолжать обработку документа?
 
если я правильно понял, то скрипт, перед перенаправлением, полностью "читается".
EXIT же ставят для того, чтобы сэкономить время обработки и не "считывать" лишнее (то, что идет после location).
это предположение или где-то указывается в документации (я на счет того что после exit не считывается докумет)?

header - отсылает заголовок, а переходить или нет по адресу, указанному в header:Location..., решает браузер.

А зачем вам, отослав пользователя на другую страницу, дальше продолжать обработку документа?
мне не надо продолжать обработку, просто хочу разобраться какую роль выполняет exit в данном примере

т.е. правильно ли я понял, что:
1. После location скрипт загружается, но не выполняется?
2. После exit и не загружается и соотв. не выполняется?
 
офиц. документация отличная вещь
exit — Выводит сообщение и прекращает выполнение текущего скрипта
 
  • Заблокирован
  • #8
да что тут сложного?
PHP:
header("location: file.php");
отправляет 302 редирект на страницу file.php(т.е. в браузере открывается file.php). Разумеется после выполнения подобного действия продолжать работу сценария в исходном файле нет смысла и для освобождения ресурсов сервера скрипт принудительно останавливают. Имеет смысл если дальше идёт ещё какой-то код.
 
да что тут сложного?
PHP:
header("location: file.php");
отправляет 302 редирект на страницу file.php. Разумеется после выполнения подобного действия продолжать работу сценария в исходном файле нет смысла и для освобождения ресурсов сервера скрипт принудительно останавливают. Имеет смысл если дальше идёт ещё какой-то код.
после location скрипт и так не выполняется (проверил только что), ну в общем, получается, что exit ставится на тот случай если браузер вдруг решит выполнить скрипт после location

P.S. вывод сделан на основе (кусок из оф документации) :
Код:
<?php
header("Location: http://www.example.com/"); /* Redirect browser */
 
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
 
  • Заблокирован
  • #10
если браузер вдруг решит выполнить скрипт после location
бред. Браузеры не могут выполнить скрипт после определённой строки. ставится тупо чтобы принудительно освободить ресурсы сервера. Хотя если после слова exit() больше никакого кода нет, то я тоже не понимаю зачем его написали. наверно для очистки совести, потому что компилятор и "сам бы его туда поставил"
 
Назад
Сверху