增量会话

时间:2012-12-19 07:57:34

标签: php session increment

我有一个登录页面。当用户名或密码正确时,您将转到主页。但是在输入错误的用户名和密码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.请帮助。

3 个答案:

答案 0 :(得分: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

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

答案 1 :(得分: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');  
}

答案 2 :(得分: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');  
}