脚本告诉我谁和有多少用户在线

时间:2009-02-20 09:14:41

标签: php sql mysql

在我的研究中,为了找到一种方法让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 个答案:

答案 0 :(得分:11)

只需使用session id代替IP。

答案 1 :(得分:3)

使用Cookie而不是IP地址。

PHP使用它的会话机制非常容易。每个人首先执行session_start(),然后使用session_id()返回的值作为您可以放入数据库的访问者的标识符。

答案 2 :(得分:2)

我为学校网站创建了一个系统,该系统也要求使用此功能,以及我是如何做到的。

我有一个用户表,在该表中有一个名为“online_time”的字段

在每个页面上,如果用户已登录,则会调用一个函数,将“online_time”更新为该用户的当前时间。 (unixtime)

然后我有一个“谁在线”功能,查看“online_time”并显示所有用户在过去5分钟的在线时间。

编辑评论:

您可以使用相同的功能将会话ID保存在另一个表中以及保存时间。会话ID对于该用户浏览是唯一的,因此您可以在最近5分钟内获得会话ID的活动数量。

session_id()