PHP:标题后的代码效果(“位置:abc.html”)

时间:2011-04-29 15:06:07

标签: php http

让我们说,代码看起来像这样:

if(!$test) {
  header("Location: somefile.html");
  ...some PHP code....
  header("Location: anotherfile.html");
}

上面执行了'某些PHP代码'吗?如果是,那么其中的HTTP响应会发生什么(例如:代码中的第二个'header'语句)?

6 个答案:

答案 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直接按顺序执行,因此您可能无法看到第一个标题下方的效果。