php - 我应该在调用Location:header之后调用exit()吗?
在调用重定向函数头之后,我应该调用exit还是不?php - 我应该在调用Location:header之后调用exit()吗?
<?php // fileA
$urlFailToGoTo = '/formerror.php';
if (sth)
{
header(sprintf("Location: %s", $urlFailToGoTo));
exit(); //should I call exit() here? or return?
}
?>
谢谢
你绝对应该。否则脚本执行不会终止。单独设置另一个标题不足以重定向。
你好奥利弗, 退出是否终止执行脚本在formerror.php? 我想我的问题是当我在'header'之后调用'exit'时。哪个脚本受到影响并且不会再执行? 谢谢 – q0987 2010-08-24 13:28:12
退出总是中断当前脚本(在你的情况下“fileA”)。您重定向到的页面(“/formerror.php”)完全不受影响。 重定向告诉浏览器向您在“位置”中指定的位置发起一个新的HTTP请求。这与手动点击指向“formerror.php”的链接基本相同。 – rgroli 2010-08-24 14:06:13
非常感谢:) – q0987 2010-08-24 23:50:49
它总体上是好的做法exit;
(注 - 这是一个关键字,所以你不需要()
)发送Location:
头之后,因为浏览器都应该重定向到新页面,因此当前脚本的进一步执行通常是不希望的。
您应该像@rgroli解释的那样。如果你不想用括号打扰,你也可以拨打header()
INexit()
:在HTTP
if(sth) exit(header("Location: http://example.com"));
Location头/ 1.1总是需要绝对路径see the note here。
注:这不是一个黑客,因为exit code仅用于如果参数是整数,而header()
产生空隙(它与代码= 0,正常退出退出)。将它看作exit_header()
函数就像在Location
后面应该的那样。
退出是错误的编码。
如果你曾经开发过一个大项目并想创建PHP单元测试用例,那么退出会让你感到困扰。
退出终止脚本和您的运行测试!有没有办法恢复测试和判断它已失败或不...
组织代码的方式,没有输出,如果你使用重定向脚本自然结束......
可能的重复[为什么我必须在通过头('地点..')在PHP重定向后调用'退出'](http://*.com/questions/2747791/why-i-have-to-call- exit-after-redirection-through-headerlocation-in-php) – 2014-10-14 17:52:49