PHP头重定向通过if语句
我有一些代码来记录尝试了多少次密码,如下所示:PHP头重定向通过if语句,php,redirect,http-headers,Php,Redirect,Http Headers,我有一些代码来记录尝试了多少次密码,如下所示: <?php /* Access denied */ $_SESSION['error'] = "invalidlogin"; if (isset($_SESSION['tries'])) { if ($_SESSION['tries'] == 5) { //TODO: Redirect somewhere nicer and more descriptive header("location:
<?php
/* Access denied */
$_SESSION['error'] = "invalidlogin";
if (isset($_SESSION['tries']))
{
if ($_SESSION['tries'] == 5)
{
//TODO: Redirect somewhere nicer and more descriptive
header("location:/index.php");
}
else
{
$_SESSION['tries']++;
}
}
else
{
$_SESSION['tries'] = 0;
}
header("location:/login.php");
?>
但它总是继续运行,然后重定向到
header("location:/login.php");
如何让PHP在点击index.PHP重定向后立即重定向
我是否只是在index.php重定向之后设置一个布尔值,然后在login.php重定向上检查它
编辑:为了澄清,我已经定义了一个session_start();不用担心。根据,调用
exit()是一种很好的做法调用header()后的code>代码>重定向仅在发送到客户端浏览器且浏览器启动新请求(终止当前请求)后生效。简单地调用header()不会启动重定向-脚本将一直运行,直到它正常退出、连接关闭、Web服务器关闭脚本,或者显式终止执行
如果希望重定向头立即生效,则需要终止脚本,这会导致刷新任何挂起的输出(包括重定向头):
首先,你的整个方法是有缺陷的。您不应该在登录失败时执行重定向,这可能会导致安全问题。您应该确保脚本在同一请求中包含正确的子页面
尽管从技术上讲,您的问题的答案是,如上所述,使用exit()。您忘记启动会话了!!!!
在标题后使用exit或die(“location:/index.php”);不要继续剩下的我知道,这就是为什么有待办事项,现在只是一个简短的总结
header("location:/login.php");
header("location:/index.php");
exit();
header("Location: ...");
exit();