我正在尝试使用codeigniter创建基于文章的网站。当请求从数据库中获取任何文章以供查看时,我使用以下代码在一个名为“hits”的单独表中标记每篇文章的唯一视图的数量。
mysql_query("INSERT INTO hits(ip,article_slug,hitcount)
VALUES('$ip_address','$id',1)
ON DUPLICATE KEY UPDATE hitcount=hitcount+0");
我获取用户的IP地址,并从$ this-> uri-> segment(3)获取article_slug的值; 然后运行上面的mysql查询。
我在这里使用IP地址来获取唯一视图的数量,但我突然想到有几个人可能正在使用相同的IP地址。所以在这种情况下我的查询似乎没有效果。
所以我想知道最有效的方法是什么。我的一个朋友在谈论使用cookie代替IP地址。你认为这是一个好主意还是有更好的方法呢?
您能否告诉我如何做到这一点?
提前致谢:)
答案 0 :(得分:0)
我建议您使用Google Analytics并设置仅跟踪文章视图的自定义报告。这将为您提供您所寻求的洞察力以及更多,这将避免计算机器人(如Google,Bing或SPAMer)。
但是,如果您想要自己跟踪用户,我建议您在一个字段中跟踪IP地址,在另一个字段中跟踪会话ID。
session_start();
$user['ip'] = $_SERVER['REMOTE_ADDR'];
$user['sid'] = session_id();
答案 1 :(得分:0)
使用cookie背后的原因是,如果某些用户群落后于代理,您将获得所有阅读您的文章错误的用户的相同IP地址。
所以你可以使用两者的组合,这样你就可以获得更好的结果。您可以使用cookie或会话。但是如果你使用cookie并给它一个大约一年或更长的有效期,并且如果你为cookie指定一些唯一的哈希值(可能是日志表的主键的md5),那么你可以很好地跟踪用户。
如果你不明白我的意思,请告诉我。