Page Watch计数器

时间:2016-03-09 16:32:21

标签: php mysql

我正在开发一个拥有许多产品的网站。对于每个产品,我想要显示一个计数器,其中包含观看它的不同用户的数量。

我面临的问题是,有用户登录而其他用户没有登录,而且这个事实是要避免增加观看次数。来自同一用户的不止一次。

那么,解决这个问题的最佳方法是什么?如何存储信息?

2 个答案:

答案 0 :(得分:0)

这对于非注册用户来说根本无法做到。您可以做的最接近的事情,实际上网络分析服务在实践中做的是创建跟踪cookie。

最简单的形式看起来像这样:

<?php
if (isset($_COOKIE["trackingId"])) {
    $uid = $_COOKIE["trackingId"];
} else {
    $uid = uniqid();
    setcookie("trackingId",$uid,2147483647);
}

请注意,分析网站会尝试使用可能唯一标识用户的信息,例如他们收到的硬件功能,屏幕分辨率等。

创建一个表格:

用户观看

productId, userId, trackingId

您可以使用此表来跟踪谁在观看您的产品。普通注册用户将与userId一起存储。非注册用户将与其跟踪ID一起存储。

这种方法的优点是,即使他们更改IP,您也可以跨会话使用相同的浏览器跟踪同一用户。缺点是,一旦用户清除了他们的cookie,你就丢失了这些信息。

您可以通过canvas fingerprinting之类的操作来改进您的跟踪机制,而不是使用uniqid,但这里要实现的是,没有任何方法可以永久正确地识别用户,因为用户应该有权不被追踪。

答案 1 :(得分:-1)

对于简单的解决方案,您可以:

  1. 要分隔“查看”用户,您可以依靠用户的IP。
  2. “查看”信息可以存储在简单的表product_view中(id,product_id,view_ip,user_id)