为什么在通过标头重定向(‘Location.’)后,我必须调用‘Exit’用PHP?

为什么在通过标头重定向(‘Location.’)后,我必须调用‘Exit’用PHP?

您知道,如果要在PHP中重定向用户,可以使用Header函数:

header('Location: http://smowhere.com');

这也是众所周知的,这是一个很好的做法,也是一个exit;在.之后header调用,以防止执行其他php代码。所以我的问题是:头位置调用后的代码能有效执行吗?在哪种情况下?恶意用户能否完全忽略header('Location..')打电话?多么,怎样?


白衣非少年
浏览 454回答 3
3回答

肥皂起泡泡

标头位置调用后的代码能有效执行吗?是的,一直都是。这个header只是一行数据问要重定向的浏览器。页的其余部分仍将被送达通过PHP,客户端可以通过简单地防止header命令执行。这对于命令行客户机来说非常容易,比如wget例如,简单地告诉它不要跟随重定向。底线:如果你不阻止它,PHP会发出整个身体,即使在header打电话。该机构是完全可用的收件人,没有任何特殊的黑客技能。

心有法竹

如果你重定向但你没有die() / exit() 代码总是被执行和显示。.以下列例子为例:php:if (authenticationFails){     // redirect and don't die}// show admin stuff如果不确保在位置标头之后结束执行每一,每个用户将获得访问权限。

红糖糍粑

header()指示PHP发送HTTP报头.当HTTP头被发送时。当您将调用写到Header()时,这些不是立即发送的,而是在发送它们的时候立即发送的。(通常,当PHP需要开始发送响应体时-这可能比您想象的要晚。output_buffering使能).所以,如果你打电话header(),可以绝对保证在此语句之后编写的代码不被执行-除非您指示它不能执行,方法是使用exit/die.用户可以忽略Location如果他想要的话,它不会更改任何内容,因为在调用header()可能执行也可能不执行:这件事是服务器端的。
打开App,查看更多内容
随时随地看视频慕课网APP