php - 我应该在调用Location:header之后调用exit()吗?

时间:2010-08-24 05:02:33

标签: php

调用重定向函数标题后,我应该调用exit吗?

<?php // fileA
$urlFailToGoTo = '/formerror.php';

if (sth)
{
   header(sprintf("Location: %s", $urlFailToGoTo));
   exit(); //should I call exit() here? or return?
}

?>

谢谢

5 个答案:

答案 0 :(得分:74)

你绝对应该。否则,脚本执行不会终止。单独设置另一个标头不足以重定向。

答案 1 :(得分:29)

你应该像@rgroli解释的那样。如果您不想打扰括号,也可以拨打header() IN exit()

if(sth) exit(header("Location: http://example.com"));

HTTP / 1.1中的位置标头始终需要绝对路径see the note here

注意:这不是黑客攻击,因为exit code仅在参数为整数时使用,而header()生成void(它以代码= 0退出,正常退出)。将其视为exit_header()函数,应该在Location标题之后。

答案 2 :(得分:20)

通常好的做法是exit;(注意 - 这是一个关键字,因此您不需要())发送Location:标头后,因为浏览器应该重定向到新页面因此通常不希望进一步执行当前脚本。

答案 3 :(得分:8)

如果标题下没有任何代码(PHP或HTML),则不必。

答案 4 :(得分:4)

退出是错误的编码。

如果你开发了一个大项目并想要创建PHP单元测试用例,退出会搞砸你。

exit会终止脚本和正在运行的测试!没有办法恢复测试,并告诉它是否失败......

按照自己的方式组织代码,没有输出,如果使用重定向,脚本会自然结束......