为什么重定向后代码继续执行?
为什么使用header()
重定向后继续执行?
$flag=1;
if($flag==1)
header("Location:page1.php");
header("Location:page2.php");
当我使用此代码时,浏览器重定向到 page2.php
。 为什么会出现这种情况?
Why does the execution continue after redirection using header()
?
$flag=1;
if($flag==1)
header("Location:page1.php");
header("Location:page2.php");
When I use this code the browser redirects to page2.php
.
Why does this happen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您需要在标头调用之后放置一个
exit;
;客户端停止加载页面后,PHP 不会自动停止执行代码。You need to put an
exit;
after the header call; PHP does not automatically stop executing code after the client stops loading the page.代码应如下所示: -
如果不使用“
exit()
”/“die()
”构造,PHP 将继续执行下一行。这是因为 PHP 将用户重定向到第一个提到的页面(在本例中为“page1.php
”),但在执行整个页面中写入的所有语句之后,甚至在“< code>header()”方法被执行。为了阻止这种情况,我们需要使用“exit()
”/“die()
”结构。希望有帮助。
The code should be like:-
If you don't use the "
exit()
" / "die()
" construct, PHP will continue to execute the next lines. This is because PHP redirects the user to the first-mentioned page (in this case it's "page1.php
"), but internally after executing all the statements written in the whole page, even after the "header()
" method is executed. To stop this, we need to use either the "exit()
" / "die()
" constructs.Hope it helps.
它的工作原理如下:
服务器端:PHP 创建要发送的 HTML 页面。如果
$flag == 1
,它将其标头更改为location:page1.php
。在每种情况中,由于没有else
,它会将标头更改为location:page2.php
。然后,该页面将发送到您的浏览器,它会重定向您。
我的建议:只需在第二次标头更改之前添加
else
即可。Here is how it works:
Server side: PHP creates a HTML page to send. If
$flag == 1
, it changes its header tolocation:page1.php
. In every case because there is noelse
, it then changes the header tolocation:page2.php
.Then, the page is sent to your brower, which redirects you.
My advice: simply put
else
before your second header change.这应该可以防止重定向到 page2.php。
只要记住将 exit() 放在必要的地方即可。
This should prevent redirection to page2.php.
Just remember to put exit() where it's necessary.