【发布时间】:2015-03-19 07:22:58
【问题描述】:
我正在创建一个网站,我希望能够看到谁在线,谁不在线。查看谁在线并不难,当你登录时,数据库中的“在线”字段从0变为1。但问题在于离线。我设法做到了 IF 该人在注销按钮上注销并被重定向到 logout.php 页面:
<?php
session_start();
$user_check=$_SESSION['login_user'];
if(session_destroy())
{
$connection = mysql_connect("localhost", "root", "");
$db = mysql_select_db("masterrad", $connection);
$query2 = mysql_query("update users set online = '0' where username = '$user_check'", $connection);
header("Location: index.php");
}
?>
但如果他只是关闭页面,数据库中不会有任何变化,因为他从未访问过 logout.php 页面。
所以我想知道是否有更好的方法来做到这一点?
【问题讨论】:
-
会话将/应该自动删除自己,这取决于您如何设置服务器的会话寿命。更新,好吧,那是另一回事。谷歌“如果浏览器关闭则更新数据库”。你会发现很多结果。
-
这是一个糟糕的主意,但是您可以拥有一个“心跳”系统,在该系统中每 x 分钟发送一个 ajax 请求。如果您没有收到答复,请标记为离线。
-
是的,“心跳”是一个糟糕的主意。
-
出于好奇,为什么心跳系统在这里被如此强烈地拒绝?我遇到过许多使用该范例的生产站点。
标签: php mysql sql session logout