2 votes

Cakephp unique view count

J'essaie de faire en sorte que mon compteur de vues ne compte que les visiteurs uniques.

Dans mon contrôleur d'éléments de Cakephp 2.x, j'ai ce qui suit :

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

Cela ajoute +1 à la colonne des coups et fonctionne bien. Le problème est que le fait de cliquer plusieurs fois sur la vue augmente le nombre d'occurrences.

Une idée de la façon dont je pourrais faire un compte unique ?

Merci d'avance

4voto

Ross Points 10658

Solution rapide

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

Cela définit une session unique pour chaque article consulté, sur la base du slug.

Si la session n'existe pas encore, c'est que l'utilisateur n'a pas consulté l'article. Il faut donc augmenter le nombre d'occurrences, puis définir la session.

Si la session existe déjà, ne la mettez pas à jour à nouveau.


Cela signifie qu'un utilisateur ne peut pas augmenter le nombre d'occurrences par élément, plus d'une fois par session, ce qui est à peu près tout ce que vous pouvez obtenir en quelques lignes de code.

Tout ce qui est plus précis demandera beaucoup d'efforts et n'en vaut probablement pas la peine.

0voto

AtulParmar Points 278

CakePHP Counter Helper : CakePHP helper pour afficher les statistiques des visiteurs.

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

Il s'agit de l'installation manuelle de CakePHP Counter Helper.

Lorsque vous avez téléchargé le paquet, extrayez-le où vous voulez.

  1. Tout d'abord, allez dans votre PHP MyAdmin -> Votre base de données importer le fichier "init.sql" pour créer une table pour l'aide.
  2. Copier "modèle \counter.php "dans votre répertoire de modèles.
  3. Copiez le dossier "counter" vers "webroot/img/" => il s'agit de fichiers images.
  4. Copiez le fichier principal "counter.php" dans le répertoire "app/view/helpers/".

Tout est fait.

Utilisation, veuillez lire example.php

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X