Encore un compteur (désolé) : visiteurs uniques et hits

Soyez le premier à donner votre avis sur cette source.

Vue 7 948 fois - Téléchargée 642 fois

Description

OK, les compteurs sont surfaits. Je vous propose quand même le mien, qui compte les visiteurs uniques et hits et est simple à mettre en oeuvre...

Contenu du zip :
- create_table.php :
à lancer une fois pour créer la base de données.
- counter.php :
le script de compteur
- mapage.php :
une page exemple affichant le compteur
- count.txt :
le fichier enregistrant les hits et visiteurs. La première valeur est les hits, la deuxième les visiteurs uniques
- GNUGPL.txt :
The GNU General Public License :)

Requis : PHP et MySQL

Fonctionnement :
1. Entrez les info de votre base de données dans counter.php et create_table.php
2. Ouvrez create_table.php pour créer la table
3. Ajoutez include ("counter.php"); à l'endroit où vous voulez afficher le compteur
4. Euh... modifiez le look du compteur (facultatif mais bon là je crois que ça s'impose un peu)

Blabla légal :) : ce script est gratuit, vous pouvez le modifier/redistribuer sous les termes du GNU General Public License publié par la Free Software Foundation, soit la version 2 de la licence, ou (à votre convenance), n'importe quelle version ultérieure (voir le fichier readme).

Source / Exemple :


<?php
$db_host="127.0.0.1";		// PARAMETRES DB MYSQL
$db_user="username";
$db_pass="password";
$database="database_name";

mysql_connect($db_host,$db_user,$db_pass) or die("Unable to connect to database");
mysql_select_db($database) or die( "Unable to select database");

$tps_unique=3600*24;		// Entrez ici le temps, en secondes, pendant lequel vous voulez ne pas reconter le même IP comme un visiteur unique
$cfile="count.txt";		// Entrez ici le chemin du fichier où seront stockés les hits et visiteurs (nom compris ! :) )

/*	Cette partie du code est facultative, elle permet d'alléger une partie du code d'après, mais je ne sais pas si c'est un bon choix (ça fait une requête de plus à chaque hit !) alors je la mets en "option"
$date_limite=time()-$tps_unique;			// Tout d'abord, on supprime les visiteurs "périmés" :p
mysql_query("DELETE FROM iplog WHERE heure <$date_limite");

  • /
$now=time(); $IP=$_SERVER['REMOTE_ADDR']; $query = "SELECT * FROM iplog WHERE IP='$IP'"; $resultat = mysql_query($query); $unique=true; if(false!=($ligne = mysql_fetch_array ($resultat))) // Si l'IP existe dans la table { $heure_limite=$ligne['heure']+$tps_unique; if($now<$heure_limite) // Si l'IP a été ajouté il y a moins du temps $tps_unique, ce n'est pas un nouveau visiteur {$unique=false;} else // Si l'IP a été ajouté il y a plus de temps que $tps_unique, c'est un nouveau visiteur (donc $unique=true) et on renouvelle la table {mysql_query("UPDATE iplog SET heure='$now' WHERE IP ='$IP'");} } else { mysql_query("INSERT INTO iplog VALUES ('','$IP','$now')"); } mysql_close(); // ************ gestion de l'erreur de fichier manquant, vous pouvez la supprimer si vous ne compter pas supprimer le fichier de compteur if(!file_exists($cfile)) // Si le fichier de compteur n'existe pas, on le crée et on le met à zéro { $fp=fopen($cfile,"w"); fputs($fp, "0|0"); fclose($fp); } // ************ fin de gestion de l'erreur $fp=fopen($cfile,"r"); // On ouvre le fichier et on lit les deux valeurs $inp = fread($fp, filesize($cfile)); $tmpvar = explode('|', $inp); fclose($fp); $tmpvar[0]++; // On ajoute un hit if($unique!=false){$tmpvar[1]++;} // S'il le faut, on ajoute un visiteur $fp=fopen($cfile,"w"); // On met tout ça dans le fichier fputs($fp, $tmpvar[0]."|".$tmpvar[1]); fclose($fp); echo $tmpvar[0]. ' hits and ' .$tmpvar[1]. ' visitors.'; // Affichage des hits et des visiteurs, à modifier pour un meilleur look :) // Vous pouvez aussi ajouter une fonction pour mettre le s que s'il y a plus d'un visiteur, mais bon, le cas contraire est peu fréquent... :) ?>

Conclusion :


Ben c'est à peu près tout... les commentaires, critiques, idées d'optimisation, etc sont les bienvenus. Je mets ça dans la catégorie réseau & internet, sans grande conviction... :)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
273
Date d'inscription
dimanche 4 octobre 2009
Statut
Membre
Dernière intervention
25 août 2014
4
c'est super, ça marche chez moi
Messages postés
14
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 octobre 2005

Merci beaucoup, je met ce compteur sur mon site........
Messages postés
73
Date d'inscription
lundi 31 mai 2004
Statut
Membre
Dernière intervention
23 février 2007

Hello,

voici le lien vers la dernière MAJ (modifications mineures, la principale étant la traduction en anglais ;)) : http://mpam.free.fr/v3/ourfreestuff.php?p=php_03
(je ne la poste pas ici car j'ai traduit tous les commentaires en anglais)

@+
Messages postés
73
Date d'inscription
lundi 31 mai 2004
Statut
Membre
Dernière intervention
23 février 2007

Salut,

Quand tu entres tu HTML ou du javascript dans une page en php, ça marche. En fait, quand tu mets l'extension .php à la place de .htm, ça dit juste au serveur qu'il faut qu'il regarde s'il y a des balises <?php code php ?> à exécuter : le reste de la page (ce qui n'est pas entre les balises <?php et ?>) est servi comme si c'était une page html.

@+
Messages postés
14
Date d'inscription
mercredi 24 novembre 2004
Statut
Membre
Dernière intervention
15 octobre 2005

Okey, super cool, merci.

Mais, quand j'entre de l'HTML ou du javascript dans une page en php, est-ce que ça marche parce que moi, j'ai crer tout mon site en HTML et javascript.
Afficher les 15 commentaires

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.