PHP header(); 可靠性

And*_*rey 2 php redirect http-status-code-302

如果我不希望他们能够访问某个页面,我需要重定向用户.header('Location: ../acc/login.php');例如,可靠性如何?浏览器可以忽略302错误,这是正确的方法吗?提前致谢!

hak*_*kre 5

这取决于你想要做的很多事情.从技术上说,header()有点可靠.只是在某种程度上,因为许多PHP用户遇到了问题并且无法使用它.

如果输出已经发送到浏览器,PHP将阻止它工作.一个激烈的例子:

<protected page content here>
<?php
    header('Location: login-first.php');
    exit();
?>
Run Code Online (Sandbox Code Playgroud)

这根本不起作用.您最终会看到一条带有警告的错误消息.

标题 - 按设计 - 需要在任何其他内容(响应主体)之前发送出去.如果响应主体已经启动,则无法再发送它们,在这种情况下PHP无法帮助您.

但是,如果您在响应正文之前发送标头,则该功能将起作用.此外,明显混乱的风险也不再那么激烈了:

<?php
    header('Location: login-first.php');
    exit();
?>
<protected page content here>
Run Code Online (Sandbox Code Playgroud)