保持唯一文章视图数量记录的最有效方法是什么

时间:2012-05-11 18:55:30

标签: php mysql codeigniter

我正在尝试使用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地址。你认为这是一个好主意还是有更好的方法呢?

您能否告诉我如何做到这一点?

提前致谢:)

2 个答案:

答案 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),那么你可以很好地跟踪用户。

如果你不明白我的意思,请告诉我。