Télécharger
Noter:

Ajouté le 26/10/2015
Visionné 5479 fois
4.5/5

Compteur de visites sans base de données

Description

Ce système de statistiques simple et sans base de données, vous permet d'afficher le nombre de visite sur votre site, utilise un fichier txt pour comptabiliser les visites.

<?php
//pour que le script fonctionne, créez le dossier /compteur/ et créez le fichier stats.txt dedans
function compteur($Afficher=0){
//vous pouvez modifier le chemin ici:
$CheminStats="compteur/stats.txt";
/*
Utilisation:
echo compteur(1);//affichera le nombre d'affichages aujourd'hui
echo compteur(2);//affichera le total depuis la création du compteur
compteur();//comptera l'affichage
*/
//on vérifie si aujourd'hui il y a eu des visites, si oui on ajoute une visite, si non on ajoute une nouvelle ligne
$Contenu=file_get_contents($CheminStats);//lecture du fichier stats
if($Contenu==""){
if($Afficher==0){
//si le contenu du fichier est vide, on commence par ajouter une ligne
file_put_contents($CheminStats,date("d-m-Y").":1\n");//notez le \n qui nous permettra de faire un saut de ligne à chaque nouvelle journée
} else {
return "1";//si on veut seulement afficher le nbr d'affichage aujourd'hui
}
} else {//sinon on ajoute cette visite
/* le contenu de ce fichier est de type suivant: "date:nombre d'affichage"
exemple:
10-12-15:2548
11-12-15:4528
12-12-15:3584
13-12-15:1253
*/
//on vérifie donc si il existe une ligne avec la date d'ajourd'hui, pour cela:
$Lignes=explode("\n",$Contenu);//extraction de chaque ligne dans un tableau (array)
$NbrDeLigne=count($Lignes);//compte le nombre de ligne, pour pouvoir choisir la dernière
$DerniereLigne=$Lignes[$NbrDeLigne-2];//-2 parce qu'un tableau commence toujours par 0 et souvenez vous, l'ajout de \n nous rajoute une ligne
$ExLigne=explode(":",$Lignes[$NbrDeLigne-2]);//va nous permettre de récupérer la date ou le nbr d'affichage
if($ExLigne[0]==date("d-m-Y")){
if($Afficher==0){
//si la date de la dernière ligne est aujourd'hui, on rajoute 1 affichage à cette ligne
$LigneAmodifier=date("d-m-Y").":".$ExLigne[1];
$LaRemplacerPar=date("d-m-Y").":".($ExLigne[1]+1);
$NouveauContenu=str_replace($LigneAmodifier,$LaRemplacerPar,$Contenu);
file_put_contents($CheminStats,$NouveauContenu,LOCK_EX);
//la fonction str_replace de php nous serira à prendre la ligne entière d'ajourd'hui puis de la modifier en y rajoutant 1 affichage
} elseif($Afficher==1){
return $ExLigne[1];//si on veut seulement afficher le nbr d'affichage aujourd'hui
} elseif($Afficher==2){
//on additione toutes les lignes pour retourner le total
$StatsTotales=0;//on initialise notre variable
foreach($Lignes as $ligne){
if($ligne!=""){
$LigneStat=explode(":",$ligne);
$StatsTotales+=$LigneStat[1];
}
}
return $StatsTotales;//on retourne le total
}
} else {
if($Afficher==0){
//si aujourd'hui il y a eu aucun affichage, on lance une nouvelle ligne pour ajourd'hui:
file_put_contents($CheminStats,date("d-m-Y").":1\n",FILE_APPEND | LOCK_EX);//notez l'utilisation de FILE_APPEND qui servira à placer la nouvelle ligne en bas du fichier sans écraser son contenu, puis LOCK_EX sert à ce que personne d'autre puisse écrire en même temps dans ce fichier
} elseif($Afficher==1){
return "1";//si on veut seulement afficher le nbr d'affichage aujourd'hui
} elseif($Afficher==2){
//on additione toutes les lignes pour retourner le total
$StatsTotales=0;//on initialise notre variable
foreach($Lignes as $ligne){
if($ligne!=""){
$LigneStat=explode(":",$ligne);
$StatsTotales+=$LigneStat[1];
}
}
return $StatsTotales;//on retourne le total
}
}
}
}
compteur();//on compte la visite
echo "Le site comptabilise ".compteur(1)." visite(s) aujourd'hui et ".compteur(2)." au total!";
?>


Vous avez le choix d'afficher le total et/ou le nombre d'affichage aujourd'hui.

Ce code actuel retournera:
Le site comptabilise XX visite(s) aujourd'hui et XX au total!

Commentaires

gaeil le 24 Janvier 2017 à 18:59

Bonjour et merci pour ce code qui fonctionne parfaitement. Y-a t-il cependant un moyen de ne pas prendre en compte ses propres visites ? car chaque fois qu'on va voir la page, on rajoute 1..
merci
Gérard

admin le 24 Janvier 2017 à 20:47

Bonjour, merci, oui ya la possibilité si votre adresse IP est fixe, il vous suffira de faire une condition en haut dans la fonction, du style:

if($_SERVER['REMOTE_ADDR']=="ici votre adresse ip"){
return false; //le compteur ne sera pas exécuté
}

gaeil le 25 Janvier 2017 à 10:22

Bonjour et merci pour la réponse. Non, l'adresse IP n'est pas fixe comme une grande majorité de "petits" sites je présume. la lecture d'un cookie sur l'ordinateur de consultation peut-être ? Si le cookie existe, on sort de la boucle compteur. Mais je ne sais pas faire...
Gérard

admin le 25 Janvier 2017 à 12:18

Je parle là de l'adresse IP de votre connexion internet, non de votre site (L'IP du site ne change pas pour les petits sites, ni même pour les grands il me semble).

Avec des cookies, alors la condition serait du même type mais avec une vérification de cookies sur l'ordinateur du visiteur.

Pour la création d'un cookie ainsi que sa vérification, je vous invite à voir la doc:
http://php.net/manual/fr/function.setcookie.php

PS: laissez moi savoir si vous parliez bien de l'IP de votre site ou de l''IP de votre connexion internet ? au quel cas si l'IP de votre internet, je vous passerai un code pour les cookies

juvlain le 20 Octobre 2017 à 19:18

bjr.. je voulais savoir comment faire un compteur de visites pour un site d'annonces.. la ou on a besoin de compter les visites pour chaque annonce ?
merci

admin le 21 Octobre 2017 à 08:34

Bonjour,

là il vous faudra vous diriger vers un script PHP qui comptabilise chaque visite dans une base de données, il existe plein d'exemples sur internet.

papa le 01 Février 2018 à 15:05

Bonjour , comment afficher le nombre de visiteurs de la veille ? : hier il y a eu X visiteurs
merci :)

admin le 01 Février 2018 à 15:23

Bonjour,

une solution simple est de récupérer l'avant dernier jour dans le fichier stats.txt

papa le 01 Février 2018 à 16:19

Bonjour , de nouveau moi :) , pouvez vous m'indiquer la formule pour récupérer l'avant dernier jour ?-
Je ne suis pas trop calé sur les codes , en vous remerciant.

admin le 01 Février 2018 à 17:30

pour récupérer l'avant dernière ligne, je vous suggère d'utiliser la fonction count() qui comptera le nombre de ligne dans le fichier stats.txt, puis de faire count-1 si bien sur vous avez plus d'un enregistrement dans le fichier stats.txt, sinon vous aurez une erreur.

Franck le 30 Septembre 2019 à 10:45

Bonjour, J'ai un auto refresh toutes les 30 secondes sur la page dans laquelle j'affiche le compteur. Toutes les 30 secondes le compteur s'incrémente de +1. Y a t'il une solution ? Merci

admin le 30 Septembre 2019 à 11:48

Bonjour, enregistrez l'IP.

Ajouter un commentaire

Pseudo/Nom *
Email *
Message *
La balise [code]Votre code...[/code] peut être utilisée

Captcha * memo1

Les champs marqués d'un * sont obligatoires.

Retour à la liste des scripts

Flag Counter