加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 如何在会话过期后自动更新数据库而不在我的页面上刷新

发布时间:2020-12-13 21:53:48 所属栏目:PHP教程 来源:网络整理
导读:此代码需要刷新或单击页面才能进入索引页面,然后在会话过期后更新数据库. 如何在会话过期后自动更新数据库,以便用户激活为0而不刷新或点击页面? $idletime = 3600; //after 1hr the user gets logged outif (time() - $_SESSION['timestamp'] = $idletime){
此代码需要刷新或单击页面才能进入索引页面,然后在会话过期后更新数据库.

如何在会话过期后自动更新数据库,以便用户激活为0而不刷新或点击页面?

$idletime = 3600; //after 1hr the user gets logged out

if (time() - $_SESSION['timestamp'] >= $idletime){
    $online = "UPDATE users SET active = 0 WHERE username = '".$_SESSION['username']."'";
    mysqli_query($con,$online);
    session_destroy();
    header("Location:index.php");
} else {
    $_SESSION['timestamp'] = time();
}

解决方法

我建议在这里使用不同的方法.
您不应更新数据库中的“活动”字段.否则,您在数据库中创建“lastActivity”字段,并在每次用户在网站上执行某些操作时更新它.

在这种情况下,您可以通过查询数据库轻松检测哪些用户处于非活动状态,如下所示:

SELECT * FROM users WHERE lastActivity < TIMESTAMP(CURRENT_TIMESTAMP() - INTERVAL 1 HOUR);

您的PHP代码如下所示:

$online = "UPDATE users SET lastActive = NOW() WHERE username = '".$_SESSION['username']."'";
mysqli_query($con,$online);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读