正如标题所述:为什么人们exit()
在一段时间后调用该方法header("...")
,该方法无论如何都无法访问?或者它是否可以访问并且添加它是否重要?
例子:
header("location: $url");
exit();
正如标题所述:为什么人们exit()
在一段时间后调用该方法header("...")
,该方法无论如何都无法访问?或者它是否可以访问并且添加它是否重要?
例子:
header("location: $url");
exit();
header()
php 解释器仅在处理命令时向浏览器发送标头。这意味着它将发送Location:...
到浏览器但继续处理 php 文件。所以你需要exit()
停止处理剩余的文件。
该header()
调用不会立即停止脚本的执行。如果您重定向但不调用 exit()
,则始终执行代码。
为了演示这个问题,您可以考虑以下代码:
header('Location: http://google.com');
file_put_contents('file.txt', 'I was executed, YAY!');
它会将您重定向到 Google,但也会以file.txt
. 它证明header()
调用不一定会停止脚本执行。您应该始终使用exit()
以确保脚本不会进一步执行。
该header()
函数不会终止您的应用程序。任何跟在header()
调用之后的代码,即使是header("Location: …")
,仍然会被执行;它的输出恰好对网络浏览器不可见。因此,exit()
在重定向之后调用是绝对必要的。
因为header
发送了一个 HTTP 头但并没有停止应用程序的执行,而是exit
实际上告诉 PHP 解释器退出应用程序,所以它有点竞争条件。如果您告诉应用程序在调用之前等待大约 5 秒,exit
它很可能不会执行,具体取决于浏览器响应 HTTP 标头的速度。