【发布时间】:2012-05-29 17:11:14
【问题描述】:
我为这些东西喝了很多,但找不到直接的答案, 我在这里搜索过这个,
但是 我仍然在努力实施,头撞墙,
会话过期后如何更新查询? 我不是在谈论显式单击“注销”按钮
这是基本的 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 处理得很好,
假设您的朋友刚刚关闭了浏览器(即他的会话不再存在), 然后不知何故你可以看到他离线
我做错了什么?处理离线/在线用户的方法不正确?
【问题讨论】: