PHP重定向后PHP是否继续执行?

时间:2016-05-04 18:06:26

标签: php

我正在创建一个根据不同场景执行大量PHP重定向的网站..就像这样...

header("Location: somesite.com/redirectedpage.php");

出于证券的考虑,我只是想彻底了解重定向的工作原理。 我的问题是,在这个标题调用之后PHP是否继续执行?

例如......回声是否仍会在这段代码中执行?

function Redirect($URL)
{
    header("Location: " . $URL);
}

Redirect("http://somesite.com/redirectedpage.php");
echo("Code still executed");

如果是这样的话......我会将Redirect功能更改为此...使回显不执行但仍然重定向?

function Redirect($URL)
{
    header("Location: " . $URL);
    exit(1);
}

Redirect("http://somesite.com/redirectedpage.php");
echo("Code still executed");

为了证明这一点,我只是想彻底了解重定向是如何工作的。

2 个答案:

答案 0 :(得分:6)

所有header()语句都是修改您的网络服务器(Apache,nginx等)发送到您的浏览器的标头。您已在页面中添加了Location:标头,告知浏览器重定向到该页面。 PHP脚本中的其他所有内容都将执行,包括echo,但您可能无法看到它,因为您将被重定向到新位置。

答案 1 :(得分:0)

header命令不会中断代码流。即使遇到这种情况,浏览器仍然会下载您的页面,即使它没有显示。考虑404页面(尽管是错误的)仍然由浏览器处理(尽管它们在重定向时不会被渲染)。

您可以输出比带有标题的Location标题更多的标题,其中大部分都不想停止代码执行。如果要停止代码执行,则需要显式调用exit。