如何在$ _SESSION变量到期时注销用户

时间:2017-04-04 14:01:47

标签: php html mysql session

我正在尝试实现一个MySQL表,其中包含当前登录的用户列表。这是我当前实现此目的的逻辑和代码。

登录时执行以下代码:

//Add the user_id to the logged_in table
$loggedInQry = mysqli_query($dbc, "INSERT INTO logged_in (user_id) VALUES ('$userId')");

单击“注销”按钮后,执行以下代码:

//Remove user from logged_in table.
$userId = $_SESSION['userId'];
$logoutQry = mysqli_query($dbc, "DELETE FROM logged_in WHERE user_id = '$userId'");

//Clear all of the saved session variables.
session_destroy();

我目前面临的问题是,如果会话在默认的24分钟后超时,则由于取消设置$_SESSION['userId']变量,用户会自动注销,但是user_id不会被删除来自logged_in表。

有没有办法可以在$_SESSION超时执行某个功能?理想情况下,我希望在会话超时时从logged_in表中删除当前$_SESSION['userId'],因为它当前保留在logged_in表中。

2 个答案:

答案 0 :(得分:0)

您需要实现自己的会话超时机制,以便在超时时执行相同的删除查询。

这将使您朝着正确的方向前进:https://solutionfactor.net/blog/2014/02/08/implementing-session-timeout-with-php/

答案 1 :(得分:0)

自动过期会话

<?php
session_start();
$idletime=30;//after 60 seconds the user gets logged out
if (time()-$_SESSION['timestamp']>$idletime){
session_destroy();
}else{
$_SESSION['timestamp']=time();
}

$_SESSION['timestamp']=time();
相关问题