lkaiman Posté(e) le 4 juin 2007 Partager Posté(e) le 4 juin 2007 Bonjour a tous J'aimerais créer un petit compteur de visite à mettre sur ma page d'accueil. Actuellement j'ai chopé un compteur gratuit pas mal, mais je suis dépendant du site et de son script. IL est sobre mais un lien vers le site du compteur se cache derrière. C'est pas que çà me gène mais je voudrais avoir mon propre compteur J'ai vu sur mes recherches du net que l'on peut créer un petit script associé à un fichier texte. Dans ce fichier texte se trouve le numéro 0 qui s'incrémente à chaque visite. Ce petit script était en php, et ma page d'accueil (une image avec lien de redirection vers mon forum/blog en construction) est simple et en html. Voila, je demande vos lumière sur la création d'un compteur perso. En vous remerciant d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
rantanplan08 Posté(e) le 4 juin 2007 Partager Posté(e) le 4 juin 2007 Sa dépends déjà si tu veus que les visiteurs uniques ou non... Si oui tu fais un fichier des ip qui se sont connectées dans la journée (pour éviter de compteur plusieurs fois la même ip, donc plusieurs fois le même visiteur). Pour récupérer l'ip qui parcours la page, suffit de faire un : $ip=$_SYSTEM[REMOTE_ADDR]; Ensuite tu incrémentes ton compteur dans le fichier txt si l'ip courante n'a pas été trouvée dans le premier fichier des connexions de la journée. Puis une fois par jour, tu fais un petit script que te remet à zéro le fichier des connectés (il suffit pr sa de comparer la date du jour avec celle du dernier enregistré ds le fichier). Voilà @+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Amour Posté(e) le 4 juin 2007 Partager Posté(e) le 4 juin 2007 $_SYSTEM[REMOTE_ADDR] n'existe pas... par contre avec $_SERVER['REMOTE_ADDR'] ça peut marcher de partout Lien vers le commentaire Partager sur d’autres sites More sharing options...
lkaiman Posté(e) le 4 juin 2007 Auteur Partager Posté(e) le 4 juin 2007 $_SYSTEM[REMOTE_ADDR] n'existe pas... par contre avec $_SERVER['REMOTE_ADDR'] ça peut marcher de partout J'suis pas un dingue de code erf! j'ai trouvé çà sur le net -> comment faire un compteur sans redondance sans forcément passer par une seule page pour comptabiliser l'entrée Phase 1 : incrémenter la valeur dans le fichier Ce fichier va s’appeler compteur.cpt. Principe de l’algorithme : si le fichier n’existe pas encore (file_exists), alors on le crée et on l’ouvre en écriture (fopen w) et on initialise le compteur à zéro en écrivant la chaîne ‘0’ en premiére ligne (fputs) et on le referme (fclose). Ensuite, ouverture du fichier en lecture plus écriture (fopen r+), lecture du nombre (fgets), incrémentation d’une unité du nombre (++), positionnement du pointeur courant du fichier en première ligne (fseek 0) et réécriture du nombre (fputs) puis fermeture (fclose). Cet algorithme (écrit dans la diapo suivante) est écrit directement dans le code source de la page d’accueil. Algorithme : $fichier = "compteur.cpt"; // affectation du nom de fichier if( ! file_exists($fichier)) { // test d’existence // Initialisation du fichier si n’existe pas encore $fp = fopen($fichier,"w"); // ouverture en écriture fputs($fp,"0"); // écriture fclose($fp); // fermeture } $fp = fopen($fichier,"r+"); // ouverture $hits = fgets($fp,10); // lecture $hits++; // incrémentation fseek($fp,0); // positionnement fputs($fp,$hits); // écriture fclose($fp); // lecture Phase 2: Généralisation aux autres pages Comme les internautes peuvent atterrir sur des pages internes à votre site sans passer par l’ accueil, il peut être intéressant de votre site sans passer par l’ accueil, il peut être intéressant de pouvoir comptabilité des visites des autres pages. Créons donc une fonction que l’on placera dans un fichier à part par exemple compteur.php et que l’on appellera par inclusion comme ceci : <?php include("compteur.php");Mon_Compteur("ma_page") ?> Remplacez "ma_page" par un identifiant unique pour chaque Généralisation aux autres pages <? function Mon_Compteur($page) { $fichier = $page.".cpt"; if(!file_exists($fichier)) { $fp = fopen($fichier,"w"); fputs($fp,"0"); fclose($fp); } $fp = fopen($fichier,"r+"); $hits = fgets($fp,10); $hits++; fseek($fp,0); fseek($fp,0); fputs($fp,$hits); fclose($fp); } ?> Phase 3 : Protection contre la redondance Comme un visiteur peut charger plusieurs fois la même page au cours d’ une même visite, ce mode même page au cours d’ une même visite, ce mode de décompte n’ est pas assez précis et va surestimé le nombre réel de visiteurs. Solutions ? Il faut garder en mémoire le fait qu’ un visiteur est déjà passé par la page et incrémenter le compteur seulement si ce n’ est pas le cas Protection contre la redondance On va créer une variable de session : un tableau contenant la liste des pages visitées. Principe du nouvel algorithme : on teste l’ existence de la variable de session $PAGES_LIST. Si elle n’ existe pas on la crée, on y ajoute la page en cours et on appelle la fonction Mon_Compteur Si elle existe, on teste la présence de la page en cours dans ce tableau, si elle n’ y est pas alors on l’ y met et on appelle Mon_Compteur L’ appel est légèrement différent : <?php $page = "ma_page"; // définition du nom de la page include("compteur.php"); // chargement de l’ algorithme ?> Protection contre la redondance Code à rajouter dans le fichier compteur.php session_start(); // démarrage de la session if( ! isset($PAGES_LIST)) { /* test de l’ existence de la variable de session */ $PAGES_LIST = array($page); // création de la variable session_register($PAGES_LIST); // ajout de la page en cours Mon_compteur($page); // incrémentation du compteur } else { if( ! in_array($page, $PAGES_LIST)) { // test de redondance $PAGES_LIST[ ] = $page; /* ajout dans la variable de session pour éviter la redondance */ Mon_compteur($page); // incrémentation du compteur } j'ai suivi à la lettre, mais a mon avis il manque l'intégration dans une page du nombre de visite un peu d'aide siouplet !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
rantanplan08 Posté(e) le 5 juin 2007 Partager Posté(e) le 5 juin 2007 $_SYSTEM[REMOTE_ADDR] n'existe pas... par contre avec $_SERVER['REMOTE_ADDR'] ça peut marcher de partout oui exacte je psychote... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Eagle1 Posté(e) le 7 juin 2007 Partager Posté(e) le 7 juin 2007 des outils comme netstat ou xiti sont très performant et n'affiche qu'un petit logo... ça ça marche <? function Mon_Compteur($page) { $fichier = $page.".cpt"; if(!file_exists($fichier)) { $fp = fopen($fichier,"w"); fputs($fp,"0"); fclose($fp); } $fp = fopen($fichier,"r+"); $hits = fgets($fp,10); $hits++; fseek($fp,0); fseek($fp,0); fputs($fp,$hits); fclose($fp); } ?> on peux faire bcp plus simple par contre un site avec un petit cour sympa sur l'ouverture, écriture, lecteur d'un fichier texte en php: toutwebmaster.be c'est basique mais simple au moins après le mieux est de créé un cookie pour chaque utilisateur qui vient sur ton site qui dure jusqu'a minuit (tu calcul suivant l'heure du serveur) avant d'incrémenter le compteur, tu vérifie si le cookie existe... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.