2

正如标题所述:为什么人们exit()在一段时间后调用该方法header("..."),该方法无论如何都无法访问?或者它是否可以访问并且添加它是否重要?

例子:

header("location: $url");
exit();
4

4 回答 4

2

header()php 解释器仅在处理命令时向浏览器发送标头。这意味着它将发送Location:...到浏览器但继续处理 php 文件。所以你需要exit()停止处理剩余的文件。

于 2013-10-30T15:43:20.077 回答
0

header()调用不会立即停止脚本的执行。如果您重定向但不调用 exit(),则始终执行代码。

为了演示这个问题,您可以考虑以下代码:

header('Location: http://google.com');
file_put_contents('file.txt', 'I was executed, YAY!');

它会将您重定向到 Google,但也会以file.txt. 它证明header()调用不一定会停止脚本执行。您应该始终使用exit()以确保脚本不会进一步执行。

于 2013-10-30T15:52:30.740 回答
0

header()函数不会终止您的应用程序。任何跟在header()调用之后的代码,即使是header("Location: …"),仍然会被执行;它的输出恰好对网络浏览器不可见。因此,exit()在重定向之后调用是绝对必要的。

于 2013-10-30T15:44:21.913 回答
0

因为header发送了一个 HTTP 头但并没有停止应用程序的执行,而是exit实际上告诉 PHP 解释器退出应用程序,所以它有点竞争​​条件。如果您告诉应用程序在调用之前等待大约 5 秒,exit它很可能不会执行,具体取决于浏览器响应 HTTP 标头的速度。

于 2013-10-30T15:44:40.957 回答