我正在开发一个拥有许多产品的网站。对于每个产品,我想要显示一个计数器,其中包含观看它的不同用户的数量。
我面临的问题是,有用户登录而其他用户没有登录,而且这个事实是要避免增加观看次数。来自同一用户的不止一次。
那么,解决这个问题的最佳方法是什么?如何存储信息?
答案 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)
对于简单的解决方案,您可以: