我需要在标题后使用exit("Location:http:// localhost/...");?

Mar*_*rco 16 php validation

我正在创建一个脚本来验证表单,我问自己一个问题.当我使用标题(参见下面的示例)时,我是否需要在之后使用退出?我的意思是,使用标题也意味着它默认退出,因此我不需要使用命令exit?

// cancel button clicked
if (isset($_POST['cancel'])) {
  header("Location: http://localhost/admin/tracks.php");
  exit;
}

echo '<p>$name</p>'
Run Code Online (Sandbox Code Playgroud)

Age*_*rum 23

你应该调用exit()因为一个header()不会自动停止执行脚本 - 或者如果它确实(我老实说不是100%),它肯定不会立即停止脚本.

例如,尝试以下代码:

<?php

  header("Location: http://www.google.com");
  unlink(__FILE__);

?>
Run Code Online (Sandbox Code Playgroud)

这个小脚本用于header()将您重定向到Google,然后删除自己.如果您运行它,您会注意到在重定向后,该文件仍然被删除.这意味着unlink()即使header()呼叫重定向您,呼叫仍然执行.


Sha*_*had 7

exit在header-> location调用之后使用,因为我希望能够绝对依赖于脚本不会超过header-> location调用这一事实.

如果某个地方出现了错误并且您的脚本在header-> location调用之前开始生成输出,则调用将失败,并且脚本执行将正常继续(除非您调用exit)