0

我假设我不能使用会话而是使用 DATABASE 来执行此操作。所以用户会登录,它会设置他们的 TIMESTAMP,然后我会从数据库中显示出来。然后,当用户注销或他们的会话终止时,它会被删除。代码将如何查找这个?

更好的问题是,我的逻辑是否正确?这行得通吗?这有意义吗?

4

2 回答 2

2

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

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

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

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

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

根据您使用的平台,序列化和反序列化可能具有内置支持。例如,如果您使用的是 PHP,那么这些函数session_encode可能session_decode会很有用。

于 2012-05-26T07:36:23.983 回答
1

您无法查明用户何时在 PHP 中注销,并且 Javascript 变通办法离稳定的解决方案有点远。

您需要做的几件事: 在您的用户表中创建一个名为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))
于 2012-05-26T07:00:43.127 回答