在调用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单元测试用例,那么退出会让您感到困扰。
退出终止脚本和您的运行测试! 没有办法恢复测试,并告诉它是否失败或没有…
以这种方式组织您的代码,如果您使用重定向,那么没有输出,脚本自然结束。