我环顾了一段时间,试图找到它,但是没有运气。我的论坛中有一个聊天室,我希望能够显示当前在线的人,就像Facebook在聊天中一样。
首先,我在用户表中创建了一行,以便他们登录时将其值设置为1,如果他们单击logout,则将其设置为0。但是后来我注意到,如果会话结束并且已经被登录自动注销,然后将值设置为1,就好像他们从未注销一样。
我想知道是否有更好的方法可以做到这一点。我见过有人说要设置一个新表或记录他们的上一次活动,但我有些困惑。
答案 0 :(得分:1)
您为每个用户添加了一个额外的列,并在该列中存储了上次活动的时间(以时间戳的形式,或者其他方便的形式)。
如果用户的上一次活动时间不超过现在的一分钟(或少于)分钟-则认为该用户处于活动状态。
您可以使用参数-不需要一分钟。可能需要5分钟。
根据您的应用程序,您可以在用户每次打开某个页面时为其更新该列,或者在您的聊天页面上具有一些js脚本,这些脚本将使用AJAX或其他技术向服务器发送请求以进行更新该列-表示该特定用户处于活动状态。
答案 1 :(得分: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();
答案 2 :(得分:0)
您设置了一个php脚本,可以验证它们仍然通过ajax登录,并让用户的浏览器经常发送该脚本。如果他们在给定的时间内没有响应,请将其注销。