<分区>
所以,这是我所做的:
我在数据库的 users
表中添加了一列,该列称为 logged_in
,每当用户登录时我将其设置为 1,然后设置它当用户注销时为 0(然后我通过检查他/她的每个 friend 的该列来显示用户的 friend 是否在线)。
我还必须在用户每次登录时保持登录状态,直到他通过单击注销按钮手动注销为止,这就是我使用 cookie 的原因。
如果用户总是通过单击我网站上的注销按钮注销(或者如果我以某种方式被允许在用户清除他们的 cookie 时更新我的数据库中的“logged_in”列(不可能),那么所有这一切都会很好用) .
这就是导致我出现问题的原因:
每当用户删除他们的 cookie 时,我的代码就会错误地将他们在我的数据库中的 logged_in
列读取为 1
,尽管用户现在已注销(这会导致该用户的 friend 看到他“在线”而不是“离线”),这个错误一直存在,直到用户登录然后再次手动注销(按注销按钮),但每次用户清除他的 cookie 时都会发生。
我之所以没有使用任何与时间相关的东西(每 x
秒检查一次用户事件)来自动登录注销用户,是因为我必须让用户保持登录状态。
最后我的问题是:
用户应该只能通过手动按下我网站上的注销按钮来注销。我目前通过使用 cookie 使他们保持登录状态来实现这一点(这样他们就无法通过关闭我的网站或关闭浏览器来注销),但是当他们删除他们的 cookie 时,该用户就超越了我的第一定律,现在我的数据库错误地假定用户仍处于登录状态。