登录后超时注销

系统有自带设置可以实现session超时

session.gc_maxlifetime = 1440 #(PHP5默认24分钟)

这里你可以随便设置一下过期时间。但是有人说设置以后,好象不起作用!其实不是不起作用,而是因为系统session回收机制是按机率启动的,可能在某一个长时间内都没有被启动。

 

以下是我的思路:
首先设置一个登录正确的开始时:$_SESSION['LOGIN_TIME'] = time();
然后判断现在的时间: $times = time();
最后比较两个时间,比如我们将登录超时设置成120分钟,即7200秒, if (($times – $_SESSION['LOGIN_TIME'] ) > 7200)
如果大于就清空登录缓存,
如果小于则将登录时间设置成现在时间。这样就避免在操作过程中出现超时的情况了,以下是

<?php
if (!session_id())
    session_start();
if (!isset($_SESSION['USER_KEY'])) {
    header("Location: Main.php?do=logIn");
} else if ($_SESSION['USER_KEY']['LOGIN_TIME']) {
    if (time() - $_SESSION['USER_KEY']['LOGIN_TIME'] > 7200) //120 mins
    {
        unset($_SESSION);
        header("Location: Main.php?do=logIn&redirect=" . $_SERVER['REQUEST_URI']);
    } else {
        $_SESSION['USER_KEY']['LOGIN_TIME'] = time();
    }
}

?>

你可能感兴趣的:(PHP)