我已经为这些东西狂饮了很多,但找不到直接的答案,我在这里搜索过,
但我仍在努力实施,
会话过期后如何更新查询?我不是在谈论明确点击“注销”按钮
这是基本的SQL结构:
CREATE TABLE auth_users (
email varchar(40) NOT NULL,
password varchar(40) NOT NULL,
online ENUM('1') DEFAULT NULL <-- HERE, it updates to 1 when user logged in, it updates back to NULL when user explicitly clicks on LOGOUT
) type=MyISAM;
类层次结构:
interface {
function login();
function logout();
//calls after succes authorization
function set_as_online();
//calls from within logout() method
function set_as_offline();
}
但是当用户关闭他的浏览器时,它不会更新回 NULL,
例如,假设我们有两个用户:User-A,User-B
用户 A 成功登录,现在用户 B 可以看到用户 A 为在线用户。
如果用户 A 忘记单击“注销”并关闭浏览器,用户 B 仍然可以看到用户 A 在线。那就是问题所在。
例如,Facebook 处理得很好,
假设您的朋友刚刚关闭了浏览器(即他的会话不再存在),那么您可以以某种方式将他视为 OFFLINE
我究竟做错了什么?处理离线/在线用户的方法不正确?