Cakephp 独特浏览次数

标签 cakephp count cakephp-2.0 unique

我试图让我的观看次数仅计算唯一身份访问者。

在 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/

相关文章:

javascript - cakephp 2.4 中的自动完成实现

php - 我如何限制用户可以在 CakePHP FormHelper 的日期字段中选择的日期?

r - 计算相同行的数量

php - MYSQL COUNT 不为 Left Join 和 Group By 返回 0

ruby-on-rails - 在 rails find 调用中计数不同的结果

cakephp - 用于 cakePHP 应用程序的 Redis

mysql - 查找模仿 CakePhp 中的 LeftJoin

php - 进行ajax调用时如何在cakephp中的过滤器之前跳过

CakePHP 删除 Cookie 问题

php - CakePHP 数据库连接 "Mysql"丢失,或无法创建