我假设我不能使用会话而是DATABASE。因此用户将登录,它将设置他们的TIMESTAMP并从数据库中显示它。然后,当用户注销或其会话终止时,它将被删除。代码如何看待这个?
更好的问题是,我的逻辑是否正确?这会有用吗?这有意义吗?
答案 0 :(得分:2)
默认情况下,应用服务器将会话数据存储在服务器上的临时文件中。
通过将会话数据存储在数据库表中,您可以创建一个界面来显示有关登录用户的信息。除此之外,如果您需要扩展您的数据,使用此(数据库)方法是一个重要的优势应用程序添加多个服务器。
实现此类功能的最常用方法之一是创建一个包含您的用户的session
表格。会话数据。这可能看起来像:
create table session (
id number primary key,
data varchar(240),
timestamp date
);
数据列以序列化形式存储所有会话数据,每次用户请求数据时都会反序列化。
序列化和反序列化可能具有内置支持,具体取决于您使用的平台。例如,如果您使用的是PHP,则可以发现函数session_encode
和session_decode
很有用。
答案 1 :(得分:1)
您无法找到用户何时使用PHP注销,而Javascript解决方法与稳定解决方案相差甚远。
您需要做的一些事情:在用户表中创建一个名为last_activity
的列,并在用户加载页面时将其last_activity更新为当前时间。
有关谁在线的列表,请查询具有last_activity值的用户的数据库,其中last_activity值超过10或20或几分钟前。
要更新last_activity列,请使用:
UPDATE users SET last_activity=CURRENT_TIMESTAMP() WHERE id=2
有关在线用户列表
SELECT * FROM users where last_activity >= (CURRENT_TIMESTAMP()-(60*20))