我已经为我的客户的网站构建了一个聊天脚本。用户登录后,我设置了一个会话,并通过将聊天状态设置为 1 来更新数据库中的表。用户注销后,我将聊天状态设置为 0,此外,如果用户关闭浏览器的选项卡,聊天状态设置为 0,不再进行聊天。
这里的主要问题是如何检测如果用户的计算机关闭或电源被切断,用户是否无法聊天。或者即使用户打开一个新选项卡,而不是关闭选项卡,他关闭了浏览器?
我被困住了。提前谢谢你
或多或少是jhonraymos所说的话。如果这是一个基于 PHP 的聊天,那么你就无法真正分辨出连接何时被强行关闭。我会说,只需有某种方法来暂停聊天。
IE:如果客户端在几分钟内或长达几个小时内没有请求,则可以安全地假设它们不再连接,然后您可以将聊天状态设置为 0。
更新:
抱歉,我没有看到你的新评论。正在查看另一页...
session_start();
// set timeout period in seconds
$inactive = 600;
// check to see if $_SESSION['timeout'] is set
if(isset($_SESSION['timeout']) ) {
$session_life = time() - $_SESSION['timeout'];
if($session_life > $inactive)
{ session_destroy(); header("Location: logoutpage.php"); }
}
$_SESSION['timeout'] = time();
再次道歉,仍然习惯了堆栈溢出。
只需使用 phpmyadmin 在 MYSQL 中创建一个事件,每 1 分钟使状态 = 0(更新login_table设置状态 = '0')。
然后设置间隔以每 30 秒更新一次状态 = 1。
创建另一个 SetInterval 以检查状态 = 1 并将所有检索到 DIV(这将显示在线用户。