Le code présent ci-dessous vous permet de réaliser à la fois un compteur de hits (pages vues totales) et un compteur de visiteurs uniques quotidiens. La reconnaissance des visiteurs se fait grâce à l'ip stockée dans une table SQL et grâce au cookie créé qui ne se détruit ou se remplace lorsque l'on change de jour.
Source / Exemple :
############################################
#
# TABLE SQL A CREER DANS VOTRE BASE DE DONNEES
# INSEREZ EGALEMENT LA LIGNE CI DESSOUS
#
# CREATE TABLE compteur (
# comptage INT(9) NOT NULL,
# date DATE NOT NULL DEFAULT '0000-00-00',
# ip_adresse VARCHAR(15) NOT NULL DEFAULT '000.000.000.000'
# );
#
# INSERT INTO `compteur` (`comptage`,`date`,`ip_adresse`) VALUES ('0','0000-00-00', 'comptage');
###################################################
<?php
##################################
#
# COMPTEUR POWERED BY
#
# Webmaster-Debutant.net
# Le 01/11/2004
#
##################################
//--------------------------------------
// DEFINITION DES VARIABLES
//--------------------------------------
# Connection au serveur SQL
$wd_host = "Votre_Hôte";
$wd_login = "Votre_Login";
$wd_passe = "Votre_Password";
$wd_base = "Votre_Base";
$wd_table = "compteur";
# Date du jour + expiration du cookie + adresse ip du visiteur
$date = date("Y-m-d");
$expire = time()+(3600*24);
$ip_visitor = $_SERVER['REMOTE_ADDR'];
$temps = time();
//----------------------------------------
// CONNECTION AU SERVEUR SQL
//----------------------------------------
$connexion = mysql_connect($wd_host,$wd_login,$wd_passe)
OR die ("Serveur Down !");
$select_db = mysql_select_db($wd_base,$connexion)
OR die ("Selection impossible de la base !");
//--------------------------------
// SCRIPT DE COMPTAGE
//--------------------------------
# Incrémentation du compteur de hits totaux
$maj_hits = mysql_query("UPDATE ".$wd_table." SET comptage = comptage+1, date = '".$date."' WHERE ip_adresse='comptage'")
OR die("Incrémentation impossible ! ".mysql_error());
# On efface les enregistrements périmés (date <= $date)
$delete = mysql_query("DELETE FROM ".$wd_table." WHERE date != '".$date."' AND ip_adresse != 'comptage'")
OR die("Suppression impossible ! ".mysql_error());
# Test de l'existence du cookie WD_Compteur
if( ($_COOKIE['WD_Compteur'] != $date) || (!$_COOKIE['WD_Compteur']) )
{
# On insère les données si aucun cookie n'existe
$insert = mysql_query("INSERT INTO ".$wd_table." (comptage, date, ip_adresse) VALUES ('".$temps."','".$date."','".$ip_visitor."')")
OR die("Insertion impossible ! ".mysql_error());
# On créé le cookie WD_Compteur
setcookie("WD_Compteur",$date,$expire);
}
//---------------------------------------
// RECUPERATION DES VALEURS
//---------------------------------------
# On récupère la valeur du champ comptage
# où ip_adresse = 'comptage'
$recup_hits = mysql_query("SELECT comptage FROM ".$wd_table." WHERE date = '".$date."' AND ip_adresse='comptage'")
OR die("Selection du compteur impossible ! ".mysql_error());
$row = mysql_fetch_assoc($recup_hits);
$nbre_hits = $row['comptage'];
# On compte les visiteurs uniques, c'est à dire
# les ip enregistrées où date = '$date'
$recup_visiteurs = mysql_query("SELECT COUNT(*) FROM ".$wd_table." WHERE date = '".$date."' AND ip_adresse != 'comptage'")
OR die("Selection des visiteurs impossible ! ".mysql_error());
$nbre_visiteurs = mysql_result($recup_visiteurs,0);
//-------------------------------------------
// FERMETURE DE LA CONNECTION
//-------------------------------------------
mysql_close($connexion);
//------------------------------------
// AFFICHAGE DES RESULTATS
//------------------------------------
# On teste les pluriels et on affiche les résultats
if($nbre_hits > 1) { $s1 = "s"; } else { $s1 = "s"; }
if($nbre_visiteurs > 1) { $s2 = "s"; } else { $s2 = "s"; }
echo "<b>".$nbre_hits."</b> page".$s1." vues.";
echo '<BR>';
echo "<b>".$nbre_visiteurs."</b> aujourd'hui.";
?>
Conclusion :
Afin de faire fonctionner ce script, vous devez :
1) Créer la table SQL dans votre base de données
2) Insérer la 1ere ligne (requête INSERT INTO) dans votre table
3) Remplir les variables de connection (wd_host,wd_login...)
4) Uploader le script que vous avez enregistré sous compteur.php (par exemple) avec un logiciel type Bloc Note de Windows
5) Vous rendre à la page :
http://www.votresite.com/compteur.php pour le tester
PS : Ce script a été mis à jour le 05/12/2004. La structure de la table a été modifiée suite à un petit bug décelé lors de l'enregistrement de la même ip depuis deux postes différents (exemple : réseau d'un lycée ou tous les postes ont la même ip). En effet, seul le premier PC qui se connectait avait accès au site alors que les autres avaient une erreur à cause de l'attribut UNIQUE qui se trouvait dans la structure de la table SQL.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.