begin process at 2012 05 27 22:25:47
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > COMPTEUR DE VISITEURS UNIQUES QUOTIDIEN AVEC MYSQL.

COMPTEUR DE VISITEURS UNIQUES QUOTIDIEN AVEC MYSQL.


 Information sur la source

Note :
9,8 / 10 - par 5 personnes
9,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Initié Date de création :06/12/2003 Date de mise à jour :07/12/2003 11:56:44 Vu / téléchargé :10 672 / 986

Auteur : webdeb

Ecrire un message privé
Site perso
Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

 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

  • ///////// 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();
  • ?>
///////// 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

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip [PHP5][CLASSE] GÉNÉRATION DE FLUX RSS 2.0
GÉNÉRATION RÉCURSIVE D'UNE ARBORESCENCE DE RÉPERTOIRES
Source avec Zip Source avec une capture [POO] PHP5 ATOM GENERATOR V1.0
Source avec Zip WD_RSS_GENERATOR
Source avec Zip Source avec une capture WD_SHOOTBOX_V3

 Sources de la même categorie

Source avec une capture MODULE JOOMLA 1.5 NOW LISTENING par Alcantornet
Source avec Zip Source avec une capture UPLOAD CENTER par basssem81
Source avec Zip COMPTEUR DE CLIQUE PHP AVEC JQUERY par devgoneti
Source avec Zip LIVRE D'OR SIMPLE (POUR DÉBUTANT) par devgoneti
Source avec Zip SCRIPT TRAVAUX POUR VOTRE SITE par FleuryK

Commentaires et avis

Commentaire de perig le 07/12/2003 11:45:08

heu!!! Pour la date tu peux aussi la récupérer en 1 ligne avec
$date   = date("Y-m-d");
sinon c'est bien!!

Commentaire de webdeb le 07/12/2003 11:54:10

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 !

Commentaire de Nocturne le 07/12/2003 12:25:32

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.

Commentaire de Kirua le 07/12/2003 12:26:38

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 ;-)

Commentaire de pyranhaz le 08/12/2003 00:04:56

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

Commentaire de perig le 08/12/2003 08:03:07

pyranhaz --&gt; Si j'ai bien compris, tu veux changer ton compteur mais ce script n'est pas un script pour un compteur total.
Il ne compte que le nombre de visiteurs qui passent sur ta page dans la journée et se réinitialise chaque jour.
Ce n'est donc pas la même chose que ton conteur qui est à 26078 visiteurs.

Commentaire de Kirua le 08/12/2003 08:05:33

et puis si tu emts un enregistrement ds ta table pr chaque visiteur SEULEMENT pr faire un compteur, tu vas avoir un problème de rapidité qd ton site prendra de l'importance. pense à changer de système !

Commentaire de pyranhaz le 08/12/2003 15:11:29

OK alors j'étais dans le champs en croyant que ça ferait l'affaire...
Je vais donc garder mon compteur cgi qui fait le travail...

Autre chose...

J'ai tenté d'adapter la partie du script qui vide la table dans mon script anti-aspirateur et il semble que cela n'efface rien du tout...
Seriez-vous disposé à m'aider à apporter les correctifs nécessaires svp ???

Merci !

Commentaire de Kirua le 08/12/2003 19:09:41

ben pour la commande SQL ça donne ça:

DELETE FROM table WHERE champ='valeur'

et donc en php tu as par exemple, pr la table $table, le champ $champ et la valeur $valeur:

$requete = "DELETE FROM $table WHERE $champ='$valeur'";

ce qui est important, c'est de ne pas oublier les ' ' autour de $valeur !!

Commentaire de pyranhaz le 08/12/2003 19:20:10

Le problème est que la valeur est inconnue...
L'anti-aspirateur bloque les ip en retanant la date...
il faut donc qu'il vide la table 'ban' where 'date' est différente de celle du ip qui vient d'être banni et ne garde que les ip bannis ayant la même date et effacera tout le monde dès que la date changera pour un nouvel ip banni, etc.

Merci !

Commentaire de Kirua le 08/12/2003 19:51:47

éclaircis ta pensée

pour l'instant ce que je comprends, c'est qu'il faut que la date soit la même que celle du dernier enregistrement, ben ça tu fais une requête mysql ordonnée en fonction de la date:

ORDER BY champ_date ASC (ou DESC)
ASC = ascendant, DESC = descendant = croissant / décroissant

Commentaire de bonjovi51 le 06/04/2004 20:34:29

Super ce code, c'est tout ce dont j'avais besoin !!

Je vais te mettre un 10 puisque pour moi, ca suffit

Merci encore pour tus ces codes posés par tout le monde, c'est colle tout ca !!

Commentaire de eon2 le 09/01/2005 07:47:02

Je voi pas comment on peut faire un compteur sans avoir accé à la base de donnée à cahque visiteur ?
(comme tu le dit kirua)

Commentaire de amidulysse le 18/12/2006 02:04:15

Je suis désolé mais ce code est fondamentalement erroné.
La réponse au query de Mysql (ligne 42) n'est pas une seule valeur de $ip mais toute la série d'adresses IP de la journée. Il faut comparer la nouvelle adresse IP à toute la série!
C'est étonnant que personne ne s'en soit aperçu!
Si je devais donner une note elle serait trés petite!

Commentaire de grobs le 01/05/2007 00:00:35

Toute petite chose de rien du tout :

change ça :
if($compteur == '1' OR $compteur == '0')

en ça :
if($compteur <= '0')

;)

Commentaire de webdeb le 01/05/2007 00:11:25

Il faudrait surtout que je refasse tout le code... Celui est trop vieux, obsolète et pas du tout optimisé :s

Commentaire de grobs le 01/05/2007 00:12:30

Alors... Qu'est-ce que t'attends ?! :p

Commentaire de webdeb le 01/05/2007 00:13:12

J'attends d'avoir du temps devant moi :)

Commentaire de mouet44 le 27/07/2007 14:02:31

juste un truc. dans ton fichier install
supprimer la derniere virgule ;) ce qui donne ceci
CREATE TABLE compteur
(
ip CHAR(25) NOT NULL UNIQUE PRIMARY KEY,
date CHAR(10) NOT NULL
);

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales