让我们说,代码看起来像这样:
if(!$test) {
header("Location: somefile.html");
...some PHP code....
header("Location: anotherfile.html");
}
上面执行了'某些PHP代码'吗?如果是,那么其中的HTTP响应会发生什么(例如:代码中的第二个'header'语句)?
答案 0 :(得分:15)
是 - 代码将被执行。
header()
将配置要返回的标头,而不是立即发送。
如果2之间有无输出 电话,然后只有最后一个 考虑到了。
但是,如果您输出任何内容 在第二次通话之前,然后是 标题将被发送,第二个 调用将导致错误(标题 已发送)。
一个经典的错误是:在此之后重定向而不是exit()
,这可能会导致安全问题。
答案 1 :(得分:3)
规则是在执行标题重定向时,将exit
放在后面:
if(!$test) {
header("Location: somefile.html");
exit;
//wont ever run
...some PHP code....
header("Location: anotherfile.html");
}
如果您未放置exit
,则可能会运行以下代码。
答案 2 :(得分:2)
是的,'某些PHP代码'将会运行。 Location
标头就像任何其他标头一样。只有在脚本执行完毕后才能发送它。因此,介于两者之间的任何代码,假设没有退出,有在标题重要之前运行。
答案 3 :(得分:2)
执行其他一些代码。
标题(“位置:xxx”);
不会停止执行代码。浏览器可能需要一些时间才能响应。
答案 4 :(得分:2)
header("Location: http://www.google.com");
$test = "Hi!";
header("Location: http://www.yahoo.com?t=" . $test);
此代码将我的浏览器带到:http://www.yahoo.com/?t=Hi!
答案 5 :(得分:2)
执行header("location")
之后的代码。如果您不想要,请使用exit();
:)
重定向IS直接按顺序执行,因此您可能无法看到第一个标题下方的效果。