begin process at 2012 05 27 20:02:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ENCORE UN COMPTEUR (DÉSOLÉ) : VISITEURS UNIQUES ET HITS

ENCORE UN COMPTEUR (DÉSOLÉ) : VISITEURS UNIQUES ET HITS


 Information sur la source

Note :
8 / 10 - par 2 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Niveau :Débutant Date de création :05/07/2004 Date de mise à jour :06/07/2004 15:59:17 Vu / téléchargé :6 512 / 523

Auteur : RedFo1

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

 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

  • <?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... :)
  • ?>
<?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... :)

 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 Source avec une capture CONVERSION IP VERS PAYS
Source avec Zip Source avec une capture PHPBTTRACKERMOD : TRACKER POUR TORRENTS
Source avec Zip Source avec une capture FORMULAIRE D'INSCRIPTION AVEC VÉRIFICATION DE L'E-MAIL PAR C...
Source avec Zip Source avec une capture TURING NUMBER
Source avec Zip Source avec une capture PROTECTION DE PAGES PAR LOGIN ET MOT DE PASSE

 Sources de la même categorie

INSPECTEUR DE PAGES (VÉRIFIEZ SI DES SITES AFFICHENT UN TEXT... par pablo836
Source avec Zip Source avec une capture GÉOLOCALISATION par pgl10
Source avec Zip TAPI : METTRE EN RELATION DEUX POSTES TELEPHONIQUES par ravery
Source avec Zip CLIENT / SERVEUR : LES SOCKETS par Morphinof
Source avec Zip VALIDATEUR_3WC par lezj

Commentaires et avis

Commentaire de defkrie le 05/07/2004 13:31:49

$IP=$_SERVER['REMOTE_ADDR'];
ne marche pas tout le temps exemple qd on utilise un firewall...

Commentaire de cbibi le 05/07/2004 14:33:27

"désolé" ?
Soit ta source est inovante ou différente et dans ce cas là tu n'as pas à t'escuser ...
Soit ta source est la copie conforme dans une ancienne et là tu ne la postes pas :D

Commentaire de nico606 le 05/07/2004 14:51:28

j'ai penser la même chose que cbibi en voyant la sources mais je ne croit pas quel soit inovante lol :)

Commentaire de GRenard le 05/07/2004 17:54:08

defkrie, $_SERVER['REMOTE_ADDR'] a toujours quelque chose... mais il se peut que cela soit l'adresse du routeur.
Pour la source, elle est pas mal, par contre, il serait bien pour garder la modularité que ton echo que tu fais dans counter.txt de le mettre ailleurs... Pourquoi ? parce que counter.txt ne fait que incrémenter. Tu devrais faire un autre fichier qui fait que la lecture et qui l'affiche.

Commentaire de cbibi le 06/07/2004 05:08:31

Bah à croir que quelqun la trouve invovante ... 8/10 :D perso j'ai pas regardé la source j'ai même pas le temps tellment sui occupé :D

Commentaire de RedFo1 le 06/07/2004 08:45:25

salut,
wow, tous ces commentaires... :) je vais essayer de répondre dans l'ordre :
$_SERVER['REMOTE_ADDR'] : ça marche pour moi : sur mon serveur en local et sur le serveur de Free, ça donne bien mon adresse alors que j'ai un firewall (Sygate). En fait, c'est surtout les proxies qui posent problème... mais là je ne crois pas qu'il y ait de solution...
pour ce qui est de la copie conforme : ah ça, non :D sinon c'est plus un entraînement
pour ce qui est de l'innovation... hm ben je sais pas, il ne m'a pas semblé voir de compteur qui fasse à la fois les hits et les visiteurs, mais il y en a tellement que je ne les ai pas tous vérifiés, loin de là... l'innovation est peut-être du côté des tests : ça marche sans notice ni warning, en local et chez Free (et il m'a semblé comprendre que par ici, les posteurs de source oublient souvent de tester... :p )
GRenard : effectivement, j'avais pas pensé à ça... pour le fichier qui ne fait que lire, il suffit de mettre la partie du code qui lit (non testé) :
$fp=fopen($cfile,"r");
$inp = fread($fp, filesize($cfile));
$tmpvar = explode('|', $inp);
fclose($fp);
echo $tmpvar[0]. ' hits and ' .$tmpvar[1]. ' visitors.';

Commentaire de Mingain le 06/07/2004 09:49:08

J'ai tout spécialement ouvert le lien que j'ai vu dans le mail quotidien de code source juste pour protester au niveau du nom (sans même penser un instant à la source). C'est terrible de ne pas savoir donner un nom à sa source. Si tu savais l'effet "con" que ça fait de mettre des trucs comme "désolé". On dirait qu'il faut qu'on te plaigne parce que tu as déposé cette source. Alors, svp, réfléchissez avant de déposer une source n'importe comment ...
PS: La source est trés bon (quoique surviennent quelques petits problèmes selon la configuration du visiteur : firewall, ... Mais on en a déjà débattu, à ce que je vois!).

Commentaire de RedFo1 le 06/07/2004 15:31:07

hm... en fait, le titre et la description sont un peu à prendre au second degré... Et puis vu le nombre de hits, c'est plutôt un bon titre non ? :) et en plus, ça fait cliquer les lecteurs de la newsletter ! ;)
Par contre c'est vrai qu'il y a quelque chose qui va vraiment pas : je ne mets pas assez tôt que ça compte les hits et les visiteurs uniques, je vais modifier ça.

Commentaire de cormier le 07/02/2005 17:24:01

Comment tu fait pour le rentrer dans une page HTML

Commentaire de RedFo1 le 07/02/2005 19:08:47

salut,

pour le rentrer dans une page HTML, il faut :
- que tu mettes l'extension de ta page en .php (à la place de .htm ou .html)
- et enfin que tu mettes <?php include ("counter.php"); ?> à l'endroit où tu veux afficher le compteur

Bien sûr, il faut que le serveur que tu utilises fournisse PHP et MySQL. Et pour les détails sur l'installation, regarde la section fonctionnement de la description.

@+

Commentaire de cormier le 13/02/2005 15:14:46

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.

Commentaire de RedFo1 le 13/02/2005 20:13:14

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.

@+

Commentaire de RedFo1 le 17/02/2005 19:15:27

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)

@+

Commentaire de cormier le 19/02/2005 11:45:25

Merci beaucoup, je met ce compteur sur mon site........

Commentaire de begueradj le 31/03/2011 15:01:07

c'est super, ça marche chez moi

 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,562 sec (3)

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