【问题标题】:how to handle online status. guest, users etc如何处理在线状态。访客、用户等
【发布时间】:2010-07-28 17:12:13
【问题描述】:

跟踪在线用户和访客数量的最佳方法是什么?我正在做一个有趣和学习的论坛

现在我在用户表中有两个字段,分别称为 is_onlinelast_access_time

如果当前时间是 5 分钟或超过 last_access_time 我将 is_online 设置为零。如果登录用户刷新浏览器,我将其设置为 1。

但是客人呢?我还想跟踪有多少客人参加了

另一件非常酷的事情是显示用户正在查看的页面。在页面上,例如论坛主题,5 位客人 Homer 和 Shomer 正在查看此页面。但是我应该如何构建这个?嗯,也许我应该为此提出另一个问题。

我不知道该怎么办

你有什么建议?

【问题讨论】:

  • +1 和 +fav。好问题,我也等回复。

标签: php mysql database-design


【解决方案1】:

我会为此使用 cookie。当用户进入时设置一个cookie(首先检查以确保一个不存在)。为该用户生成唯一 ID 的简单方法是将他们的 IP 加上当前时间进行散列。

$id = md5($_SERVER['REMOTE_ADDR'] . time());

将该 id 存储在您的数据库中并使用它来引用

您可以通过在您的 php 源代码顶部附近抓取 $_SERVER['PHP_SELF'] 或 $_SERVER['REQUEST_URI'] 来检查他们正在查看的页面。将其存储在表中。我会看一下 php.net 对存储在 _SERVER 全局中的内容的解释,因为如果您发现您需要的不仅仅是它们所在的文档(例如 index.php),它应该会有所帮助。 Found here.

您可能需要提取用于访问该页面的查询字符串,解析出变量以确定他们正在请求的页面。无论哪种方式,这都可以通过 cookie 完成,或者只使用一个 cookie 来存储唯一 id 并使用您的表来存储其他所有内容。

【讨论】:

    【解决方案2】:

    您无法确定用户正在查看哪个页面,但您可以跟踪他们上次查看的页面。每次向用户提供页面时,将该页面的路径记录在与他们关联的数据库行中。瞧。

    为了保持访客数量,我建议跟踪过去 X 分钟内某个页面上看到的不同未经身份验证的 IP/HTTP-User-Agent 组合的数量。

    【讨论】:

      【解决方案3】:

      我在 Web Monkey 上发现这篇文章可能会对您有所帮助。

      http://www.webmonkey.com/2010/02/how_many_users_are_on_your_site_right_now/

      【讨论】:

      • 您还可以通过执行 AJAX 请求来跟踪当前正在查看的页面,以将信息实时发送到要记录的 Web 服务器。
      猜你喜欢
      • 1970-01-01
      • 2019-07-08
      • 2019-01-16
      • 2021-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多