显示当前登录的所有用户?

时间:2012-05-26 06:53:32

标签: session timestamp basic-authentication

我假设我不能使用会话而是DATABASE。因此用户将登录,它将设置他们的TIMESTAMP并从数据库中显示它。然后,当用户注销或其会话终止时,它将被删除。代码如何看待这个?

更好的问题是,我的逻辑是否正确?这会有用吗?这有意义吗?

2 个答案:

答案 0 :(得分:2)

默认情况下,应用服务器将会话数据存储在服务器上的临时文件中。

通过将会话数据存储在数据库表中,您可以创建一个界面来显示有关登录用户的信息。除此之外,如果您需要扩展您的数据,使用此(数据库)方法是一个重要的优势应用程序添加多个服务器。

实现此类功能的最常用方法之一是创建一个包含您的用户的session表格。会话数据。这可能看起来像:

create table session (
   id number primary key, 
   data varchar(240), 
   timestamp date
);

数据列以序列化形式存储所有会话数据,每次用户请求数据时都会反序列化。

序列化和反序列化可能具有内置支持,具体取决于您使用的平台。例如,如果您使用的是PHP,则可以发现函数session_encodesession_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))