查看在线用户的脚本,可以告诉我有哪些用户在线以及在线用户数量。

5
在研究如何让PHP告诉我网站上有多少人“在线”的方法时,我发现有一些方法可以“估计”这个数字。
为了管理错误,我选择记录网站上发生的所有事情,但是现在我卡在编写SQL查询上了。
基本上,我的数据库中有“IP”,“userid”和“datetime”,我想到了这样一个查询:
SELECT distinct(IP), datetime 
FROM `bigBrother` 
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW()

问题在于我的网站大多数被学校网络上的学生查看和使用,他们都有相同的IP。
所以问题是,我是否做得对,我能否从我的数据库中选择两个不同的行,以便我可以整理出已注册用户(他们将具有“userid” - 其他用户的userid = 0)?
3个回答

11

只需使用会话ID而不是IP地址。

可以使用会话ID


3

使用cookie代替IP地址。

PHP通过其会话机制使此过程变得非常容易。在每个页面上,您首先执行session_start(),然后使用session_id()返回的值作为访问者的标识符,您可以将其放入数据库中。


你能再解释一下吗? - Jasper

2
我为一个学校网站创建了一个系统,该网站也需要此功能。以下是我的做法:
我有一个用户表,在该表中有一个名为“online_time”的字段。
在每个页面中,如果用户已登录,则调用一个函数更新“online_time”为该用户的当前时间(Unix 时间戳)。
然后,我有一个“在线用户”函数,它查看“online_time”,并显示所有最近 5 分钟内在线的用户。
编辑评论:
您可以使相同的函数将会话 ID 保存在另一个表中,并保存其保存时间。会话 ID 对于浏览该网站的特定用户是唯一的,因此可以获得过去 5 分钟内活跃的会话 ID 数量。
session_id()

我已经有了这个功能,管理员也想知道在线人数 - 所以我还需要未登录用户的信息。 - Jasper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接