3

这是一个非常广泛的问题;我只是在寻找最好的方法来做到这一点。

我希望能够区分unique user. 我需要能够跟踪用户何时访问特定页面。

以下是我和其他人遇到的问题:

  • 使用 anIP address无效,因为一个上可能有许多计算机IP address
  • COOKIES如果用户在给定的时间段内清除他/她的 cookie,使用会遇到问题。
  • 如果会话过期,使用SESSIONS会遇到问题。

我正在考虑将这三者结合起来,但我仍然很确定这不会捕获所有异常。我需要一个类似于Youtube跟踪其视频观看次数的系统。

有没有人对此有任何其他想法?(除了实现用户系统)

4

3 回答 3

2

如果不使用 cookie/要求用户登录以识别自己 - 确定他们是否“唯一”几乎是不可能的。有几种方法可以提供帮助,但都不能保证:

您可以使用PHP 会话- 无需实际的“用户管理系统”。

session_start();
$id = session_id();
  • 这样做的好处是,只要他们的会话保持活动状态,您就可以跟踪当前用户。

  • 缺点是,如果“新用户”是会话已清除的老用户(很像用户已清除 cookie),您将无法确定“新用户”是否唯一。

另一种选择,但也与仅使用 IP 地址相同,是尝试使用来自$_SERVER环境信息的不同变量的最佳指纹识别算法:

$userFingerprint = $_SERVER['REMOTE_ADDR'] . ':' . $_SERVER['HTTP_USER_AGENT'] . ':' . $_SERVER['HTTP_ACCEPT']; // plus any others you might find helpful
  • 这样做的好处是,可能有足够的数据来区分同一网络上的用户。

  • 明显的缺点是,可能没有足够的数据来区分同一网络上的用户。

于 2012-08-15T15:22:32.770 回答
1

One other way may be to create a table in your database capturing the following data:

  • IP address
  • Operating system/ browser etc. (any other info that would be specific to that user)

Then, you could narrow it down and say, "A user at this particular IP address using this particular OS on this particular browser downloaded this image at this particular time."

Is that what you want to achieve?

于 2012-08-15T15:32:57.900 回答
1

我认为,没有任何绝对的方法可以做到这一点。用户可以更改 IP 地址、删除或更改 cookie 等,因为一切尽在掌握。

但是根据您正在计划的系统(民意调查,计数器),您可以开发一种确定唯一用户的方法。例如开发一个投票系统,你可以在数据库中插入ip、http_user_agent,也可以设置一些cookie来提高质量。

于 2012-08-15T15:24:27.637 回答