我们在公司内部实施了JQuery聊天,以进行内部通信。它工作正常。我们正在数据库中保存用户状态,当用户登录时将状态保存在DB上,当他注销更改状态为注销时。
问题是,如果任何用户没有点击已注销的按钮并关闭窗口或关闭他的电脑,他仍然会登录我们的聊天系统。
我们如何通过跟踪用户会话来跟踪每个用户是否已登录?
答案 0 :(得分:2)
我认为实现这一目标的最佳方式(但不是最安全或最强大)将通过cookie。 首先,server / jquery脚本会在计算机上放置一个cookie,当用户登录时浏览器会话结束时该cookie将被删除。然后当他们注销时,删除cookie。因此,当您想要检查用户是否已登录时,您会查找cookie。
答案 1 :(得分:0)
有一个解决方案使用CRON
例如:
让用户向服务器发送一个小“ping” - 告诉服务器,该用户仍然登录,活动并打开浏览器的消息。每次ping时,将用户的last_activity
时间更新为当前的。
使用CRON
,您可以检查所有用户的last_activity
时间是否大于30秒。如果是这样 - 将其状态设置为已注销。
简单的SQL查询:
UPDATE users
SET logged_in = false
WHERE logged_in = true
AND UNIX_TIMESTAMP() - last_activity > 30