Я не мог найти ответ, пока не нашел этот пост при exit
на php.net.
После отправки заголовка «Location:» PHP продолжит синтаксический анализ, и весь код под вызовом header () все равно будет выполнен.
Действительно ли это?
И для продолжения этого вопроса, если это действительно так, в какую пользу он должен оставить exit
(и пусть остальная часть кода работает)?
Да, это действительно так. Функция header () просто отправляет заголовок в браузер вместе с остальной частью вашей страницы, которая указывает браузеру перенаправлять. Если вы не хотите, чтобы скрипт продолжал работать, вы должны сделать exit
или die
.
Могут быть случаи, когда вы хотите, чтобы сценарий продолжал работать, хотя, в зависимости от сценария. Вы можете отслеживать удары по страницам или что-то еще, и вы можете вставить код в базу данных, содержащуюся внизу каждой страницы. Если вы хотите, чтобы он отслеживал попадание перед переадресацией, вы не хотели бы exit
раньше.
Другим случаем, который вы, возможно, захотите продолжить использовать, является то, что у вас есть заголовок с перенаправлением по времени, и вы хотите отобразить что-то пользователю, например Redirect to: http://xxxxxx in 5 seconds
. Таким образом, у них есть возможность увидеть, где их браузер работает до перенаправления. Вы, вероятно, только захотите сделать это, если бы вы перенаправляли их на совершенно другой сайт.
В большинстве случаев вы хотите exit
потому что в этом случае вы вряд ли захотите вывести что-либо в браузер, а дополнительный код просто замедлит перенаправление.
Да, это действительно так, потому что заголовки отправляются с другим контентом. Сценарий выполняется и ПОСЛЕ того, что контент и заголовки отправляются пользователю.