如果用户已经登录,请不要允许新用户

时间:2017-03-24 00:10:14

标签: php session

error_log('my test');   
if(isset($_SESSION["userName"])){
    // some user is present CHECK AND ALLOW THE LOGIN.      
    // Another user has already logged in. so check if the last session activity is more than the SESSIONTIMEOUT value.
    $idleTime = (time() - $_SESSION['LAST_ACTIVE_TIME'])/60;    
    $idleTime=9;$sessionTimeOut=10;
        if($idleTime<$sessionTimeOut)  {    
            print("*****1*****");       
            $existingUser=$_SESSION["userName"];
            // IDLE TIME IS LESSTHAN THE SESSIONTIMEOUT SO ONLY ALLOW IF IT IS AN OLD USER
                if(strcasecmp( $existingUser, $name ) == 0){
                    print("*****2*****");       
                    $_SESSION["userName"] = $name;
                    $_SESSION["ipaddr"] = $ipaddr;
                    $_SESSION["type"] = $type;
                    $_SESSION['LAST_ACTIVE_TIME'] = time();
                    updateUserInfo($name,$ipaddr,$type);
                    $url ="./PHome.php" ;
                //  header("Location: $url");
                }   else {
                    print("*****3*****");   
                    // IDLE TIME IS LESSTHAN THE SESSIONTIMEOUT AND new user, SO don't allow
                    $url ="./Login.html" ;

                //header("Location: $url?error=duplicateErr");                      
                }                                   
        } else {
        print("*****4*****");   
            // IDLE TIME IS MORE than sessionTimeOut, SO NEW SECOND USER HAS LOGGED IN
            $_SESSION["userName"] = $name;
            $_SESSION["ipaddr"] = $ipaddr;
            $_SESSION["type"] = $type;
            $_SESSION['LAST_ACTIVE_TIME'] = time();
            updateUserInfo($name,$ipaddr,$type);
            $url ="./PHome.php" ;
        // header("Location: $url");
        }       
} else {
print("*****0*****");   
error_log("errors occured");
    // No user is present So Log in 
    $_SESSION["userName"] = $name;
    $_SESSION["ipaddr"] = $ipaddr;
    $_SESSION["type"] = $type;
    $_SESSION['LAST_ACTIVE_TIME'] = time();
    updateUserInfo($name,$ipaddr,$type);
    $url ="./PHome.php" ;
    //header("Location: $url");
}       

//逻辑,

首先我正在检查用户是否已经登录,如果不是我允许用户登录, 现在,如果第二个用户已经设置了会话,那么它不应该允许用户登录,但这是允许的。 测试场景 - 首先使用Chrome登录然后使用IE登录,第二个用户可以登录。 我无法使用数据库,因为数据库被锁定并且整个应用程序都死了。 任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

虽然我不确定你是否在尝试,但是从“相同的ip”停止同一个“用户”到登录是不同的,但是如果你想在同一个用户中停止多次登录,这可能是技术

  1. 在用户旁边的数据库中添加字段
  2. 登录时将其转为1(您应该保留一个不活动计时器,但在几小时/几分钟后将其设为0)
  3. 登录时只需添加一个语句来检查该字段是0还是1