您需要刷新或单击此代码,然后它才能进入索引页面,并且在会话过期后也将更新数据库。
如何自动确保会话过期后将更新数据库,因此活动用户为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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句