Dicton du 23 Juillet:
Nuages de la Sainte-Brigitte, par le soleil sont chassés vite.

Télécharger
Noter:

Compteur de visites sans base de données

Description

Compteur de visite qui vous permet d'afficher le nombre de visite sur votre site, utilise un fichier txt pour comptabiliser les visites.

Code source (PHP)

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

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

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é
}

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

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

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

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.

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

Bonjour,

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

Bonjour , de nouveau moi :) , pouvez vous m'indiquer la formule pour récupérer l'avant dernier jour ?-
Je ne suis pas trop caler sur les codes , en vous remerciant.
( jai une erreur ligne 58 )- Pouvez vous m'aider-

que dit l'erreur ligne 58 ?

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.

bonjour , l'erreur : Fatal error: Call to undefined function: file_put_contents() in

bizarre file_put_contents est une fonction propre à PHP depuis sa version 5, regardez si vous avez la dernière version de php ou si au moins elle est égale ou plus de 5

bonjour , merci de aider la version de php est : [ PHP Version 4.4.3-dev ] sur free - je vais essayer de forcer la mise à jour j'ai vu ca sur google recherche -

bonsoir , j'ai reussi à changer la version de PHP : [ PHP Version 5.1.3RC4-dev ] - merci encore :)

Ajouter un commentaire

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

Captcha * 6 × sept =

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

Retour à la liste des scripts

Flag Counter