为什么我必须在PHP中通过标头('Location..')重定向后调用“exit”?
您知道,如果要在PHP中重定向用户,则可以使用header函数:
header('Location: http://smowhere.com');
众所周知,在调用后放置一个也是一种很好的做法,以防止执行其他php代码。所以我的问题是:标头位置调用后的代码可以有效地执行吗?在哪些情况下?恶意用户能否完全忽略该呼叫?如何?exit;
header
header('Location..')
您知道,如果要在PHP中重定向用户,则可以使用header函数:
header('Location: http://smowhere.com');
众所周知,在调用后放置一个也是一种很好的做法,以防止执行其他php代码。所以我的问题是:标头位置调用后的代码可以有效地执行吗?在哪些情况下?恶意用户能否完全忽略该呼叫?如何?exit;
header
header('Location..')
标头位置调用后的代码能否有效执行?
是的,总是。只是一行数据要求浏览器重定向。页面的其余部分仍将由PHP提供,并且客户端可以通过简单地阻止命令执行来查看。header
header
这很容易用命令行客户端来完成,例如,只需告诉它不要遵循重定向。wget
底线:如果你不阻止它,PHP即使在调用后也会发出整个身体。该机构完全可供收件人使用,无需任何特殊的黑客技能。header
如果您重定向但不重定向/代码始终执行并显示。die()
exit()
举个例子:
管理员.php:
if (authenticationFails)
{
// redirect and don't die
}
// show admin stuff
如果您不确保在位置标头之后结束执行,则每个用户都将获得访问权限。