我正在尝试实现一个 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();
但是,我当前面临的问题是,如果 session 在默认 24 分钟后超时,则由于 $_SESSION['userId'] 的取消设置,用户会自动注销
变量,但是 user_id 不会从 returned_in 表中删除。
有没有办法可以在 $_SESSION
超时时执行函数?理想情况下,我希望在 session 超时时从logged_in表中删除当前的$_SESSION['userId']
,因为它当前保留在logged_in表中。
最佳答案
您需要实现自己的 session 超时机制,以便可以在超时时执行相同的删除查询。
这将使您朝着正确的方向前进:https://solutionfactor.net/blog/2014/02/08/implementing-session-timeout-with-php/
关于php - $_SESSION 变量过期时如何注销用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209479/