在php中的某段时间后强制注销

时间:2014-02-07 18:38:30

标签: php mysql

我尝试注销用户,如果不活动2分钟(仅用于测试2分钟),当我尝试登录时,浏览器会引发“重定向循环错误”。我怎样才能让用户在一段时间不活动后退出,不包括关闭页面然后重新打开它,虽然只需2秒就可以重新登录

更新:

if (isset($_SESSION['timestamp'])) {
        $elapsed_time = time() - $_SESSION['start_time'];
        if ($elapsed_time >= 60) {
            mysql_query("UPDATE `users` SET `status` = '0' WHERE `user_id` = '$session_user_id'");
            session_destroy();
            header('Location:logout.php');
        }
    }
    $_SESSION['timestamp'] = time();

2 个答案:

答案 0 :(得分:0)

您需要测试:

if($_SESSION['logged_in'] && time() - $_SESSION['timestamp'] > 120) {
    //your code
}

因为time() - (未设置的var)将始终为> 120.例如:https://eval.in/99143

编辑添加客户端javascript:

<script type="text/javascript">
  setTimeout(function(){
    location = 'logout.php'
  },60000)
</script>

这将使浏览器在页面上停留60秒后“logout.php”。

答案 1 :(得分:0)

如果您刚发布的代码在index.php中,则time() - $ _SESSION ['timestamp']将始终大于120,因此您的循环。 您可以在PHPINI中更改会话超时

OR

if(isset($_SESSION['timestamp']) {

您的代码

} else {
$_SESSION['timestamp'] = time();

这样你首先要检查是否已经设置了SESSION ['timestamp']