Compteur de visite Cakephp

Par Theskinline01, il y a 10 ans


Bonjour à tous :)

Voilà j'ai crées un site sous cakephp et j'essais de faire un compteur de visite, j'ai créer une fonction qui stoke les ip dans ma BDD a condition que la date soit différente, mais je ne c'est pas comment appeler cette fonction quans un utilisateur consulte mon site.

<?php App::uses('AppController','Controller'); class Stats_visiteController extends AppController{ public function compteur_visite(){ $this->loadModel('stats_visites') $ip = $_SERVER['REMOTE_ADDR']; $date = date('Y.m.d'); if (!= $this->stats_visite->find('all',array('condition' =>array('ip' => $ip,'date' => $date)))) { $this->stats_visite->save(array( 'ip' => $ip, 'date' => $date )) # code... } } }

4 réponses

Romano83, il y a 10 ans

Salut !
Appel en Ajax dans ta vue ?

Theskinline01, il y a 10 ans

Appel en Ajax ? comment je peut faire ? car niveaux Ajax je n'y connais absolument rien... :/

Romano83, il y a 10 ans

Si tu as une div qui entoure l'ensemble du contenu dans ta vue, tu peux faire quelque chose du style :

// Fichier de vue <div id="MonId" data-id="id-de-la-page" data-url="<?= $this->Url->build(['controller' => 'Stats_visiteController', 'action' => 'compteur_visite']); ?>">// ton contenu </div> // dans ta vue ou dans ton fichier .js if($('#id-de-la-page').length > 0 ){ var $id = $('#MonId').data('id'), $url = $('#MonId').data('url'); $.ajax({ method: 'POST', url: $url, data:{ id: $id } }); }

Ce n'est qu'un exemple, à toi d'améliorer ce que je viens de te proposer !
Et comme je suis bien gentil ce soir, voici un petit lien qui va pouvoir t'aider...

Theskinline01, il y a 10 ans

Merci beaucoup finalement j'ai trouver autre chose
Pour ceux que ça peut aider a faire un compteur voila comment j'ai fait :)
Mon Appcontroller: ```
<?php

App::uses('Controller', 'Controller');

/**

  • Application Controller
  • Add your application-wide methods in the class below, your controllers
  • will inherit them.
  • @package app.Controller
  • @link http://book.cakephp.org/2.0/en/controllers.html#the-app-controller
    */
    class AppController extends Controller {

    public $components = array(
    'Session',
    'Cookie',

    'Auth' => array(
        'authenticate' => array(
        'Form' => array(
            'scope' => array('User.active' => 1)
            )
        )
    )

    );

    public function beforeFilter() {

    parent::beforeFilter ();
     $this->compteur_visite();
            $this->Auth->allow('signup','login','activate','forgot', 'password','users','blog','veiw','Offres','Partenaire', 'Minecraft');
    
    if (isset ( $this->request->params ['prefix'] ) && $this->request->params ['prefix'] == 'admin') {
    
        if ($this->Auth->user ( 'role' ) != 'admin') {
            throw new NotFoundException ();
        }
    }

    }

    public function compteur_visite(){
    $this->loadModel('statsvisites');

    $ip = $_SERVER['REMOTE_ADDR'];
    $date = date('Y.m.d');
    
    $stats = $this->statsvisites->find('all',array(
        'condition' =>array(
            'ip' => $ip,
            'date' => $date)));
    
    if(!empty($stats)) {
    
    }else{
        $this->statsvisites->save(array(
            'ip' => $ip,
            'date' => $date
            ));
    }
    $visiteur = $this->statsvisites->find('count',array(
        'condition' =>array(
            'date' => $date)));
    
    $this->set('visiteur', $visiteur);

    }

}

Voila j'ai tout mis dans le AppController :) Par contre Romano83 si tu connais le JS j'ai un autre gros problème sur mon panel de serveur de jeux que je fait sous CakePhp je vais ouvrir un autre topic, si tu peux y jeter un coup se serait sympa :) http://www.grafikart.fr/forum/topics/18814