php-调用Location:header后是否应该调用exit()?

php-调用Location:header后是否应该调用exit()?,php,Php,调用重定向函数头后,我是否应该调用exit <?php // fileA $urlFailToGoTo = '/formerror.php'; if (sth) { header(sprintf("Location: %s", $urlFailToGoTo)); exit(); //should I call exit() here? or return? } ?> 谢谢通常退出是一种好的做法(注意-这是一个关键字,因此在发送位置:标题后,您不需要()),因为浏

调用重定向函数头后,我是否应该调用exit

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

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

?>


谢谢

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

您肯定应该这样做。否则,脚本执行不会终止。仅设置另一个标题不足以重定向。

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

您应该这样做,就像@rgroli解释的那样。如果您不想麻烦使用括号,也可以在
exit()中调用
header()

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

注意:这不是黑客攻击,因为仅当参数为整数时才使用,而
header()
生成void(它以code=0退出,正常退出)。将其视为
exit_header()
函数,就像它应该在
位置之后一样。

退出是错误的编码

如果您曾经开发过一个大型项目,并且想要创建PHP单元测试用例,exit会把您搞砸

退出将终止脚本和正在运行的测试!无法恢复测试并判断它是否失败


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

你好,奥利弗,退出是否会终止formerror.php中脚本的执行?我想我的问题是当我在“header”之后调用“exit”时。哪个脚本受影响,将不再执行?谢谢退出总是中断当前脚本(在您的情况下是“fileA”)。您重定向到的页面(“/formerror.php”)完全不受影响。重定向告诉浏览器向“位置”中指定的位置发起新的HTTP请求。这基本上与手动单击指向“formerror.php”的链接相同。因此,exit基本上只针对服务器,因此它不会再做任何不必要的工作?您好,aromawebdesign.com,我在formerror.php中有代码。这是个问题吗?谢谢如果您在调用header之后有任何类型的代码,您应该调用die();或退出();我想您是指
exit()
?;)中的
标题
可能重复这是否意味着您正在将
标题的输出作为
退出的退出代码传递?这不是有点不可取吗?@ADTC
header()
在PHP中返回void,只有当参数为整数时才使用exit code。在这种情况下,它只是默默地停止代码生成(意味着退出代码=0,正常退出)。我认为如果测试软件不能对它正在测试的脚本进行沙箱处理,那就是测试软件的失败。这就像一台计算机关闭,因为一个shell脚本使用
exit
命令终止。不,在任何东西之间终止任何东西都是错误的。编程背后有一个堆栈。这一切都是从函数调用开始的,最终都会以函数调用结束。我不知道你说的是什么
:/
@Umingo这不是
退出
调用(或者
中断
,在函数/方法中)的真正目的吗?不仅在PHP中,而且几乎所有著名的编程语言都是如此?@Umingo您能发布一些源代码或示例吗?您只是再次回答同样的问题,它看起来更像是一种观点,而不是编程事实。
if(sth) exit(header("Location: http://example.com"));