2

ビューがユニークな訪問者のみをカウントするようにしようとしています。

私のCakephp 2.xのItem Controllerには、次のものがあります。

function view($slug = null) {
    [...]
    $this->Item->updateAll(
        array('Item.hits'=>'Item.hits+1'),
        array('Item.slug'=>$slug)
    );
}

これにより、ヒット列に +1 が追加され、正常に機能します。欠点は、ビューを何度もクリックするとカウントが増えることです。

一意のカウントを作成する方法はありますか?

前もって感謝します

4

2 に答える 2

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);
}
[...]

これにより、スラッグに基づいて、表示されたアイテムごとに一意のセッションが設定されます。

セッションがまだ存在しない場合、ユーザーは記事を閲覧していないため、ヒットを増やしてからセッションを設定します。

セッションが既に存在する場合。再度更新しないでください。


これは、1 人のユーザーが 1 つのセッションでアイテムごとのヒット数を 2 回以上増やすことができないことを意味します。これは、数行のコードで得られるものとほぼ同じです。

より正確なものは、多くの労力を必要とし、それだけの価値がない可能性があります。

于 2012-10-09T11:51:39.760 に答える
0

CakePHP Counter Helper: 訪問者の統計を表示する CakePHP ヘルパー

http://www.phpclasses.org/package/7391-PHP-CakePHP-helper-to-display-visitor-statistics.html

これは CakePHP Counter Helper の手動インストールです

パッケージをダウンロードしたら、任意の場所に解凍します。

  1. まず、PHP MyAdmin -> データベース インポート "init.sql" ファイルに移動して、ヘルパー用のテーブルを作成します。
  2. 「model\counter.php」をモデル ディレクトリにコピーします。
  3. フォルダ "counter" を "webroot/img/" にコピー => これは画像ファイルです。
  4. メインファイル「counter.php」を「app/view/helpers/」ディレクトリにコピーします。

すべて完了。

使い方はexample.phpを読んでください

于 2015-02-27T13:22:02.893 に答える