0

我有一个登录页面。当用户名或密码正确时,您将转到主页。但是3次输入错误的用户名和密码后,您转到另一个页面(不是主页)。我在登录页面开始一个会话。

session_start();
$_SESSION['login_time']=' ';

检查用户名和密码后,我想增加该会话,如果它低于 4 留在登录页面:

session_start();
if ($_SESSION["login_time"] != null){
    $_var = (int)$_SESSION["login_time"] +1;
    $_SESSION["login_time"] = $_var;
 }
if($_SESSION['login_time']<4){
    header('Location: loginpage.php');  
}

但是我的会话不会增加并且始终保持 1。请帮助。

4

3 回答 3

1
    session_start();
 //if login_time is not set, set it to 0   
    if(!isset($_SESSION["login_time"]))
        $_SESSION["login_time"] = 0;
    else
        $_SESSION["login_time"] += 1;
//else increase login_time

//if user did not exceed max tries redirect to loginpage again. 
    if($_SESSION['login_time']<4)
        header('Location: loginpage.php');  
    else
        header('Location: comelater.php');
//else send to comelater.php

请注意,如果用户超过尝试次数,他将无法查看您编写此代码的页面,直到会话结束。

于 2012-12-19T08:00:16.780 回答
0

尝试

session_start();
if ($_SESSION["login_time"] == null) $_SESSION["login_time"] = 0;
$_SESSION["login_time"] += 1;
if($_SESSION['login_time']<4){
    header('Location: loginpage.php');  
}
于 2012-12-19T08:00:46.003 回答
0

您应该检查会话是否使用 PHP 设置,isset()而不是检查会话是否不等于 null。

session_start();

if (isset($_SESSION['login_time'])) {
    $_var = (int) $_SESSION['login_time'] + 1;
    $_SESSION['login_time'] = $_var;
} else {
    $_SESSION['login_time'] = 0;
}

if ($_SESSION['login_time'] < 4) {
    header('Location: loginpage.php');  
}
于 2012-12-19T08:02:22.840 回答