PHP - Compteur objet
Transcription
PHP - Compteur objet
PHP – Compteur d’objet En se basant sur l'article déjà disponible sur le site (cf. http://www.tsom.fr/php/affiche.php?wichone=compteur), j'ai rédigé un compteur en objet. 2 cas de figure : soit vous comptez tous les visites/hits de la page, soit vous ne comptez que la première visite. Dans ce dernier cas, vous devez penser à activer au préalable les sessions. L'utilisation est simple, il suffit de mettre l'un de ces 2 codes sur les pages dont on souhaite compter le nombre de visites : CAS n°1 : nombre de hits --------------------------include("compteur.php"); // où compteur.php est le fichier définissant la classe 'compteur' $compteur=new compteur("compteur.txt"); // compteur.txt est le fichier où sera stocké le nombre de visites $nbVisites=$compteur->incrementer(); CAS n°2: avec les sessions ------------------------------------------------session_start(); include("compteur.php"); $compteur=new compteur("compteur.txt", false); // notez le 2nd paramètre à false indiquant qu'on ne compte // que la première visite $nbVisites=$compteur->incrementer(); AFFICHAGE ------------Pour afficher la valeur du compteur, il suffit juste d'utiliser : echo $nbVisites; Et voici maintenant le code de la classe 'compteur' utilisée précédemment Pour pouvoir le télécharger, connectez-vous ! ;) class compteur { var $fichier; // fichier où est stocké le compteur var $nombre; // nombre de visites var $visites; /* visites enregistrées : true => TOUTES les visites (compteur de hits) - false => seulement si c'est la PREMIERE visite (compteur de connexions) Dans ce dernier cas, les sessions doivent avoir été activées (cf. session_start()) */ function compteur($fichier, $visites=true) // constructeur { $this->fichier=$fichier; $this->nombre=$this->lire(); $this->visites=$visites; } /* ================================= */ function incrementer() // augmente la valeur du compteur de 1 (un) { switch($this->visites) { case true: // on compte TOUTES les visites $this->nombre++; $this->ecrire(); break; case false: // on ne compte que la première visite if(!isset($_SESSION['compteur'])) { $_SESSION['compteur']=true; $this->nombre++; $this->ecrire(); } break; } return $this->nombre; } /* ================================= */ function ecrire() // écrit sur disque le nombre { if(function_exists("file_put_contents")) return file_put_contents($this>fichier, $this->nombre); else { $pointeur=fopen($this->fichier, "w"); $ok=fwrite($pointeur, $this->nombre); fclose($pointeur); return $ok; } } function lire() // retourne le nombre { if(!file_exists($this->fichier)) return 0; if(function_exists("file_get_contents")) $valeur=file_get_contents($this>fichier); else { $pointeur=fopen($this->fichier, "r"); $valeur=fgets($pointeur); fclose($pointeur); } $this->nombre=intval($valeur); return $this->nombre; } } // fin class compteur