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