所以我试图有一个表格来显示哪些用户在我的网站上在线除了如果有人在没有先注销的情况下关闭网站的部分之外,我还可以正常工作我能做到的最好的。
在我的数据库中,我在该表中有一个用户表,online
当您登录时,您的online
状态设置为 1,当您单击注销时online
设置为 0。这是我尝试使用的代码,如果有人在 10 分钟内不活动,他们将注销(online
设置为 0)
<?php
session_start();
$timeout = 10; // Set timeout minutes
$logout_redirect_url = "logout.php"; // Set logout URL
$timeout = $timeout * 60; // Converts minutes to seconds
if (isset($_SESSION['last_activity'])) {
$elapsed_time = time() - $_SESSION['last_activity'];
if ($elapsed_time >= $timeout) {
mysql_query("UPDATE users SET online = 0 WHERE username = '".$_SESSION['username']."'")
or die(mysql_error());
session_destroy();
header("Location: $logout_redirect_url");
}
}
$_SESSION['last_activity'] = time();
?>
这很好用,如果他们等待 10 分钟,它会将它们注销,但如果他们只是关闭浏览器,它会保持online
= 1,将它们显示在列表中。
我认为问题在于,当他们关闭浏览器时会破坏会话,然后才有机会更新用户online
并将其设置为 0
有没有办法解决?非常感谢您的帮助谢谢:)
顺便说一句,我知道不再使用 mysql 和一切,一旦我了解更多并首先让一切正常工作,我将尝试切换到其他东西。