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


Theskinline01
Auteur
Réponse acceptée

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

Salut !
Appel en Ajax dans ta vue ?

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

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...