【问题标题】:script to tell me who, and how many users, are online脚本告诉我谁和有多少用户在线
【发布时间】:2010-10-08 19:17:46
【问题描述】:

在我研究如何让 PHP 告诉我有多少人在我的网站上“在线”时,我发现有一些方法可以“估计”这一点。

我选择记录网站上发生的所有事情,也是为了错误管理,但现在我一直在编写我的 SQL 查询。

基本上我有一个包含“IP”、“用户 ID”和“日期时间”的数据库,我认为这样的查询可以解决问题:

SELECT distinct(IP), datetime 
FROM `bigBrother` 
WHERE datetime BETWEEN DATE_SUB(NOW(), INTERVAL 3 MINUTE) AND NOW()

问题是我的网站主要由学校网络上的学生查看和使用,而且……他们都拥有相同的 IP。

所以问题是,我这样做是否正确,我是否可以从我的数据库中选择两个不同的行,以便我可以整理出注册用户(谁将拥有一个“用户 ID” - 其他人将拥有用户 ID = 0) ?

【问题讨论】:

    标签: php sql mysql


    【解决方案1】:

    只需使用session id 而不是IP。

    【讨论】:

      【解决方案2】:

      使用 cookie 代替 IP 地址。

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

      【讨论】:

      • 你能再解释一下吗?
      【解决方案3】:

      我为一个要求提供此功能的学校网站创建了一个系统,这就是我的做法。

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

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

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

      编辑评论:

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

      session_id()
      

      【讨论】:

      • 我也有,管理员也想知道有多少人在线 - 所以我还需要未登录的用户
      猜你喜欢
      • 1970-01-01
      • 2014-05-16
      • 2020-02-02
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2020-02-16
      • 2014-08-14
      • 1970-01-01
      相关资源
      最近更新 更多