我正在尝试让我的观点只计算唯一身份访问者。
在Cakephp 2.x的项目控制器中,我有以下内容:
function view($slug = null) {
[...]
$this->Item->updateAll(
array('Item.hits'=>'Item.hits+1'),
array('Item.slug'=>$slug)
);
}
这会为点击列添加+1并且正常工作。 缺点是,多次点击视图会增加计数。
知道如何才能做出独特的计数吗?
提前致谢
答案 0 :(得分:4)
快速解决方案
[...]
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,为每个查看的项目设置一个唯一的会话。
如果会话尚不存在,则用户尚未查看该文章,因此请增加匹配,然后设置会话。
如果会话已经存在;不要再次更新。
这意味着一个用户无法在任何一个会话中多次增加每个项目的点击次数,这与您在几行代码中获得的效果差不多。
任何更准确的事情都需要付出很多努力,而且可能不值得。
答案 1 :(得分:0)
CakePHP Counter Helper:用于显示访客统计信息的CakePHP助手
http://www.phpclasses.org/package/7391-PHP-CakePHP-helper-to-display-visitor-statistics.html
这是CakePHP Counter Helper的手动安装
下载软件包后,将其解压到任何地方。
全部完成。
用法请阅读example.php