Compteur de visiteurs uniques quotidien avec mysql.

Soyez le premier à donner votre avis sur cette source.

Vue 15 587 fois - Téléchargée 1 377 fois

Description

Comme promis, j'ai améliorer le précédent script qui n'était qu'un simple compteur en PHP avec fichier texte externe. En effet, ce nouveau compteur, qui fonctionne avec une table SQL de MySQL, compte les visiteurs uniques quotidiens d'un site web en relevant l'ip du visiteur et en la stockant dans la table. C'est donc un script très utiles pour compter avec une bonne précision, le nombre de visiteurs uniques qui fréquentent en une journée votre site.

De plus, dans le ficier compteur.php du zip, vous pouvez personnaliser l'affichage du compteur en modifiant les variables de police, taille et couleur.

Pour faire fonctionner ce script dans vos pages, faites un appel à include dans vos pages PHP :

<? include 'chemin/compteur.php'; ?>

Chemin : chemin d'accès au script dans votre FTP.

Source / Exemple :


///////// TABLE SQL //////////////
------------------------------------

    CREATE TABLE compteur
    (
    ip CHAR(25) NOT NULL UNIQUE PRIMARY KEY,
    date CHAR(10) NOT NULL,
    );

///////////////////////////////////

<?

// Définition des variables d'accès aux données.

$host = "Votre Hôte"; // Hôte : ex : localhost
$login = "Votre Login"; // Login d'accès à la base
$passe = "Votre Password"; // Password
$base = "Nom de votre Base"; // Base de données
$table = "compteur";

// On récupère la date du jour.

$now_Y = date("Y");
$now_m = date("m");
$now_d = date("d");
$date  = "$now_d-$now_m-$now_Y";

// On effectue une connection à la table

@MYSQL_CONNECT($host,$login,$passe) or die ("<font face=arial size=2><b>Impossible de tenter une connection !</b>.");
@MYSQL_SELECT_DB("$base") or die ("Connexion à la base $base impossible");

// On efface les IP qui sont "périmées" (date actuelle différente des dates précédentes)

$delete = "DELETE * FROM $table WHERE date != '$date'";
$query = "Mysql_Query($delete)";

// On effectue une recherche pour savoir si l'IP est déjà enregistrée.

$query = Mysql_Query("SELECT ip FROM $table WHERE date='$date'");

// On vérifie l'ip

if($ip != '$REMOTE_ADDR')
{

// On insère l'ip si elle n'existe pas.

$insert = "INSERT INTO $table (ip,date) VALUES('$REMOTE_ADDR','$date')";
$query = Mysql_Query($insert);

}

// On récupère la valeur du compteur

$select = Mysql_Query("SELECT ip FROM $table WHERE date = '$date'");
$compteur = mysql_num_rows($select);

if($compteur == '1' OR $compteur == '0')
{
echo "1 Visiteur.";
}
else
{
echo $compteur." Visiteurs.";
}

// On ferme la connection avec MySQL

mysql_close();

?>

Conclusion :


Attention :

Pensez bien à changer le nom de la table dans la structure de la table (CREATE TABLE nom_de_la_table) si vous avez modifié ce nom dans la variables $table du fichier compteur.php

N'hésitez pas à poster vos commentaires sur cette source et à vous rendre sur notre site à l'adresse suivante :

http://www.webmaster-debutant.com

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

perig
Messages postés
358
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
5 septembre 2006

heu!!! Pour la date tu peux aussi la récupérer en 1 ligne avec
$date = date("Y-m-d");
sinon c'est bien!!
webdeb
Messages postés
509
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
3
Merci pour ton commentaire !

En ce qui concerne la date, c'est juste une préférence que j'ai de faire comme ça ! Je sais que l'on peut la récupérer en une ligne. Ca me permet de la retravailler plus facilement !

@+ et encore merci !
cs_Nocturne
Messages postés
115
Date d'inscription
mardi 26 février 2002
Statut
Membre
Dernière intervention
15 novembre 2007

C'est bien, mais juste une petite remarque, tu ne comptes pas les visiteurs qui peuvent provenir d'une connexion en reseau car ils ont la même IP Wan et donc compte pour un visiteur ce qui est faut. Domage.
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008

pour la date toujours, moi je te conseil d'enregistrer des TIMESTAMPs dans ta table MySQL plutot que des dates. 9a te permet de récupérer la date et de l'enregistrer bcp plus simplement. Exemple:

pour enregistrer, tu passes time() comme param. pour que soit enregistrée la date du jour, ou bien tu utilises la fontion MySQL: NOW

pour lire, tu récupère ton timestamp dans $ts par exemple, eh bien après tu l'affiches comme tu veux!! tu fais ça: date($format, $ts);

et $format = "Y-m-d H:m:s" par exemple, c'est comme tu veux, et tu changes très facilement ;-)
cs_pyranhaz
Messages postés
236
Date d'inscription
mardi 13 mai 2003
Statut
Membre
Dernière intervention
13 décembre 2004

Comment je fais si je ne veux pas perdre la comptabilisation de mes visiteurs actuels en installant ce compteur répondant mieux à mes attentes ???

J'ai 26078 visiteurs de comptabilisés et je ne suis pas intéressé à inscrire 26078 fausses enregistrements dans MySQL pour atteindre le chiffre magique...

Comment peut-on alors modifié le nombre d'enregistrement MySQL ???

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.