为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
白衣非少年 2019-07-03 17:24:39
为什么在通过标头重定向(‘Location.’)后,我必须调用‘Exit’用PHP?您知道,如果要在PHP中重定向用户,可以使用Header函数:header('Location: http://smowhere.com');这也是众所周知的,这是一个很好的做法,也是一个exit;在.之后header调用,以防止执行其他php代码。所以我的问题是:头位置调用后的代码能有效执行吗?在哪种情况下?恶意用户能否完全忽略header('Location..')打电话?多么,怎样?
查看完整描述

3 回答

?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

标头位置调用后的代码能有效执行吗?

是的,一直都是。这个header只是一行数据要重定向的浏览器。页的其余部分仍将被送达通过PHP,客户端可以通过简单地防止header命令执行。

这对于命令行客户机来说非常容易,比如wget例如,简单地告诉它不要跟随重定向。

底线:如果你不阻止它,PHP会发出整个身体,即使在header打电话。该机构是完全可用的收件人,没有任何特殊的黑客技能。


查看完整回答
反对 回复 2019-07-03
?
心有法竹

TA贡献1866条经验 获得超5个赞

如果你重定向但你没有die() / exit() 代码总是被执行和显示。.

以下列例子为例:

php:

if (authenticationFails){
    // redirect and don't die}// show admin stuff

如果不确保在位置标头之后结束执行每一,每个用户将获得访问权限。


查看完整回答
反对 回复 2019-07-03
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

header()指示PHP发送HTTP报头.当HTTP头被发送时。

当您将调用写到Header()时,这些不是立即发送的,而是在发送它们的时候立即发送的。(通常,当PHP需要开始发送响应体时-这可能比您想象的要晚。output_buffering使能).

所以,如果你打电话header(),可以绝对保证在此语句之后编写的代码不被执行-除非您指示它不能执行,方法是使用exit/die.

用户可以忽略Location如果他想要的话,它不会更改任何内容,因为在调用header()可能执行也可能不执行:这件事是服务器端的。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 453 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信