为什么代码在重定向后执行

时间:2011-06-25 17:26:22

标签: php

为什么使用header()

重定向后执行goto
  $flag=1;
  if($flag==1)
      header("Location:page1.php");
  header("Location:page2.php");

使用此代码页重定向到page2.php时, 为什么会发生

4 个答案:

答案 0 :(得分:8)

你需要在标题调用之后添加exit;;客户端停止加载页面后,PHP不会自动停止执行代码。

答案 1 :(得分:3)

代码应该是: -

$flag=1;
if($flag==1) {
    header("Location:page1.php");
    exit();
}
header("Location:page2.php");
exit();

如果您不使用“exit()”/“die()”结构,PHP将继续执行下一行。这是因为PHP将用户重定向到第一个提到的页面(在这种情况下是“page1.php”),但是在执行完整页面中写入的所有语句后,内部甚至在“header()”之后方法被执行。要停止此操作,我们需要使用“exit()”/“die()”构造。

希望它有所帮助。

答案 2 :(得分:2)

以下是它的工作原理:

服务器端:PHP创建一个要发送的HTML页面。如果$flag == 1,则会将其标题更改为location:page1.php。在每种情况中因为没有else,它会将标题更改为location:page2.php

然后,该页面会发送到您的浏览器,然后重定向您。

我的建议:只需在第二个标题更改之前添加else

答案 3 :(得分:1)

  $flag=1;
  if($flag==1)
  {
      header("Location:page1.php");
      exit();
  }
  header("Location:page2.php");

这应该可以防止重定向到page2.php。 记得把exit()放在必要的地方。