为什么我必须在PHP中通过标头('Location..')重定向后调用“exit”?

2022-08-30 09:52:39

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

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

众所周知,在调用后放置一个也是一种很好的做法,以防止执行其他php代码。所以我的问题是:标头位置调用后的代码可以有效地执行吗?在哪些情况下?恶意用户能否完全忽略该呼叫?如何?exit;headerheader('Location..')


答案 1

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

是的,总是。只是一行数据要求浏览器重定向。页面的其余部分仍将由PHP提供,并且客户端可以通过简单地阻止命令执行来查看。headerheader

这很容易用命令行客户端来完成,例如,只需告诉它不要遵循重定向。wget

底线:如果你不阻止它,PHP即使在调用后也会发出整个身体。该机构完全可供收件人使用,无需任何特殊的黑客技能。header


答案 2

如果您重定向但不重定向/代码始终执行并显示die()exit()

举个例子:

管理员.php:

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

// show admin stuff

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


推荐