在php中如何检测用户是否已注销?

9 php mysql session redirect logout

用户成功登录后,我将login = true存储在数据库中.但是如何在不单击注销按钮的情况下关闭浏览器来检查用户是否已注销?此外,如何将已停用10分钟的用户重定向到登录页面?

我正在使用php和mysql.任何帮助,将不胜感激.

编辑:对不起,如果我的问题不明确.我确实使用会话来存储它们是否已登录.但是,现在我想将信息存储在数据库中,以便我可以在其他页面上显示它们的状态.假设user1有3个朋友.当显示他的所有朋友时,user1想知道他的朋友是在线还是离线.这就是我要的.有什么建议吗?

cee*_*yoz 13

2017编辑:这些天,您最好的选择是使用websockets跟踪页面/网站上的状态.


您无法检测用户何时关闭浏览器或使用PHP导航您的网站,并且这样做的JavaScript技术远非保证无用.

相反,您最好的选择是最有可能存储每个用户的上一个活动时间.

  • 沿着'last_activity'行在用户表中创建一列.
  • 每当用户加载页面时,将其last_activity更新为当前时间.
  • 要获取在线用户的列表,只需查询数据库中last_activity值超过10/20 /几分钟前的用户.


Gum*_*mbo 8

存储用户每个活动的时间戳.当该时间超过10分钟时,请注销.

在PHP中,你可以这样做:

session_start();
if (!isset($_SESSION['LAST_ACTIVITY'])) {
    // initiate value
    $_SESSION['LAST_ACTIVITY'] = time();
}
if (time() - $_SESSION['LAST_ACTIVITY'] > 3600) {
    // last activity is more than 10 minutes ago
    session_destroy();
} else {
    // update last activity timestamp
    $_SESSION['LAST_ACTIVITY'] = time();
}
Run Code Online (Sandbox Code Playgroud)

相反,可以在数据库上完成相同的操作.在那里,您甚至可以获得"当前"在线的用户列表.


Rop*_*tah 0

最好将 login=true 存储在会话变量中以检查用户是否登录。这可以解决您的大部分问题;)