1

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

你能给我一个关于如何做到这一点的想法吗?

提前致谢 :)

4

2 回答 2

0

The reason behind using cookie is that if some group of user is behind proxy you will get same ip-address for all the user who read your article which is wrong.

So you can use combo of both and that way you could get better results. You can either use cookie or session. But if you use cookie and give it an expiry period of about a year or more and if you specify some unique hash to the cookie (which could be md5 of the log table's primary key) and then you can track users pretty well.

let me know if you do not understand what I mean.

于 2012-05-11T19:07:16.483 回答
0

我建议使用 Google Analytics 并设置仅跟踪文章浏览量的自定义报告。这将为您提供您所寻求的见解以及更多信息,并且可以避免计算机器人(如谷歌、必应或垃圾邮件)。

但是,如果您想自己跟踪用户,我建议您在一个字段中跟踪 IP 地址,在另一个字段中跟踪会话 ID。

session_start();

$user['ip']  = $_SERVER['REMOTE_ADDR'];
$user['sid'] = session_id();
于 2012-05-11T19:05:32.163 回答