如何检查用户是否已登录?

mbjcgjjk  于 2021-06-18  发布在  Mysql
关注(0)|答案(3)|浏览(393)

我找了好一阵子想找到这个,但运气不好。我有一个聊天室在我的论坛,我想能够显示谁是目前在线,有点像facebook做他们的聊天。
起初,我在用户表中做了一行,这样当他们登录时,它会将值设置为1,如果他们点击logout,它将为0。但后来我注意到,如果会话结束并且他们已经自动注销,那么这个值仍然设置为1,就好像他们从未注销一样。
我想知道有没有更好的办法。我见过一些人说要建立一个新的表或记录他们最后的活动,但我有点困惑。

2uluyalo

2uluyalo1#

使用会话。例子:

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();
wlsrxk51

wlsrxk512#

为每个用户添加一个额外的列,并在该列中存储最后一个活动的时间(以时间戳的形式,或任何对您方便的形式)。
如果用户最后一次活动的时间不比现在少一分钟左右,则认为该用户处于活动状态。
你可以玩参数-不需要一分钟。可能是5分钟。
根据您的应用程序,您可以在用户每次打开某个页面时为其更新该列,或者在您的聊天页面上使用一些js脚本,这些脚本将使用ajax或其他技术向服务器发送更新该列的请求—这将表示该特定用户处于活动状态。

vktxenjb

vktxenjb3#

您可以设置一个php脚本来验证它们是否仍然通过ajax登录,并让用户的浏览器每隔一段时间发送一次。如果在给定的时间内没有响应,请将其注销。

相关问题