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

在调用重定向函数头之后,我应该调用exit还是不?

<?php // fileA $urlFailToGoTo = '/formerror.php'; if (sth) { header(sprintf("Location: %s", $urlFailToGoTo)); exit(); //should I call exit() here? or return? } ?> 

谢谢

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

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

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

HTTP / 1.1中的位置标题总是需要绝对路径, 请参阅此处的注释 。

注意:这不是一个破解,因为退出代码仅在参数是整数时使用,而header()产生void(退出代码为0,正常退出)。 把它看作exit_header()函数就好像它应该在Location头之后一样。

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

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

退出是不好的编码。

如果您曾经开发过一个大型项目,想要创建PHP单元测试用例,那么退出会让您感到困扰。

退出终止脚本和您的运行测试! 没有办法恢复测试,并告诉它是否失败或没有…

以这种方式组织您的代码,如果您使用重定向,那么没有输出,脚本自然结束。