使用PHP确定唯一用户(没有cookie,IP地址)

时间:2012-08-15 15:09:47

标签: php cookies ip-address

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

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

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

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

我正在考虑这三者的组合,但我仍然非常确定这不会抓住所有例外情况。我需要一个类似 Youtube 跟踪视频观看方式的系统。

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

3 个答案:

答案 0 :(得分:2)

不使用cookies /要求用户登录以识别自己 - 确定他们是否是" unique"是不是几乎不可能。有几种方法可以提供帮助,但两种方法都无法保证:

您可以使用PHP Sessions - 无需实际的用户管理系统"。

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
  • 这样做的好处是,可能有足够的数据来区分同一网络上的用户。

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

答案 1 :(得分:1)

我认为,没有任何绝对的方法可以做到这一点。用户可以更改IP地址,删除或更改cookie等,因为他们可以使用everthing。

但根据您计划的系统(民意调查,计数器),您可以开发一种确定唯一用户的方法。例如,要开发一个轮询系统,您可以将ip,http_user_agent插入数据库,同时为了提高质量,您可以设置一些cookie。

答案 2 :(得分:0)

另一种方法可能是在数据库中创建一个捕获以下数据的表:

  • IP地址
  • 操作系统/浏览器等(任何其他信息 特定于该用户)

然后,您可以将其缩小并说:“在此特定浏览器上使用此特定操作系统的特定IP地址的用户在此特定时间下载了此图像。”

这是你想要达到的目标吗?