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