Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我是否应该使用“;返回&引用;在头()之后?_Php - Fatal编程技术网

Php 我是否应该使用“;返回&引用;在头()之后?

Php 我是否应该使用“;返回&引用;在头()之后?,php,Php,快速提问,我注意到在我的一些标题控制器上,我在处理标题时遇到了一些延迟。使用标题后是否使用返回标准?此外,如果在不希望直接访问的页面上使用标题,例如处理页面将返回;即使页面未被直接访问,也要停止该处理?如果return是一个好主意,那么使用exit()会更好吗?标题(“位置:…”;退出是一种相当常见的模式。您不需要提供返回打电话后,但我知道有些人使用供应退出的惯例在头之后调用以确保以下代码在重定向过程中不会执行。请记住,除了位置:重定向之外,您还可以使用头(): header("Content-

快速提问,我注意到在我的一些标题控制器上,我在处理标题时遇到了一些延迟。使用标题后是否使用返回标准?此外,如果在不希望直接访问的页面上使用标题,例如处理页面将返回;即使页面未被直接访问,也要停止该处理?如果return是一个好主意,那么使用exit()会更好吗?

标题(“位置:…”;退出
是一种相当常见的模式。

您不需要提供
返回打电话后,但我知道有些人使用供应
退出的惯例
头之后
调用以确保以下代码在重定向过程中不会执行。

请记住,除了位置:重定向之外,您还可以使用
头()

header("Content-type: image/jpeg"); // for example
标题重定向后退出的原因是,在
header()
重定向后的任何内容输出(很可能)都不会被浏览器看到。
更重要的是,您不希望在
header()
重定向后执行任何代码,因此在重定向后调用
exit()
是一种很好的做法。

当您发送头时,您认为客户端(浏览器)应该请求另一个url,这仅仅是一个建议。然而,没有什么能阻止他们不遵循你的建议。如果您的服务器不断向他们提供数据,他们可以继续从当前url读取更多数据。这就是为什么您通常会看到在发送重定向头之后调用exit()的php代码,因为如果您停止输出更多数据,它们将无法读取任何内容

除了阻止他们读取意外数据,还有其他原因:

也许脚本的其余部分继续执行,浪费资源是毫无意义的

如果脚本继续,可能会发生运行时错误(例如,缺少变量,或者数据库连接失败)


如果脚本继续,可能会发生逻辑错误(例如,用户输入验证/身份验证失败)。

由客户端决定在
标题(“位置:…”)之后要做什么

header()
之后的任何代码都将被执行。放置
exit()仅在标题之后是一种保护措施,是保护站点安全所必需的


如果在
标题(“位置:…”)
之后有一些糖果,浏览器唯一要做的就是忽略该请求。那就天晴了。使用
exit()你正在停止执行页面,希望你的应用程序没有其他攻击向量

您可能指的是
标题(“位置:…”而不仅仅是
标题()。。因为它需要重复,例如,分配内容类型,同时使一个文件可下载。是的,我知道,我只是假设每个人都知道我的意思lol.-1没有按照规范建议输出任何正文不确定你要使用哪个规范,但RFC2616第14节(包含标题的部分)没有提到输出正文内容。事实上,第4节明确指出“所有其他响应都包含消息体,尽管它可能是零长度的。”您是否建议在所有处理页面上放置标题?如果是这样的话,是否退出并停止处理?关于为这些页面的标题构造if语句,您有什么建议?不需要在发送重定向标题后立即停止脚本执行。如果需要,在适当的时候停止执行。所以基本上,你是说,如果我想在处理页面上放置标题,这是无条件的,并且只针对试图直接访问页面的人,我不需要退出…对吗?