我试图让我的观看次数仅计算唯一身份访问者。
在 Cakephp 2.x 的项目 Controller 中,我有以下内容:
function view($slug = null) {
[...]
$this->Item->updateAll(
array('Item.hits'=>'Item.hits+1'),
array('Item.slug'=>$slug)
);
}
这会向命中列添加 +1 并且工作正常。 缺陷是,多次单击 View 会增加计数。
知道如何进行唯一计数吗?
提前致谢
最佳答案
快速解决
[...]
if($this->Session->check('has_read_item.' . $slug) === false) {
$this->Item->updateAll(array('Item.hits'=>'Item.hits+1'),array('Item.slug'=>$slug));
$this->Session->write('has_read_item.' . $slug, true);
}
[...]
这会根据 slug 为每个查看的项目设置一个唯一的 session 。
如果session尚不存在,说明用户还没有查看该文章,所以增加点击量,然后设置session。
如果 session 已经存在;不要再更新了。
这意味着一个用户不能在任何一个 session 中多次增加每个项目的点击量,这与您通过几行代码获得的效果差不多。
任何更准确的方法都需要付出很多努力,而且可能不值得。
关于Cakephp 独特浏览次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12798938/