Compteur de visite 2 en 1 sans bd

Soyez le premier à donner votre avis sur cette source.

Vue 4 421 fois - Téléchargée 571 fois

Description

Compteur de visite journalier et total sans base de donnés et qui se base sur les sessions .

pas d'installation il suffit juste d'inclure le fichier compteur.php ( <?php include 'compteur.php'; ?>) la où vous le voulez.

le principe est simple. Le fichier "cmpt_visites_total.txt" existe on prend la valeur qui s'y trouve et on ajoute 1. si le fichier n'existe pas, il est créé. De même que pour le fichier "cmpt-date_aujourdhhui.txt" . Chaque jour le fichier d'hier est supprimé.

Source / Exemple :


<?php
session_start();
$ini = 1;
$date = date('d-m-y');
$hier = date('d-m-y', time() - 3600 * 24); // détermination de la date d'hier
if(file_exists('cmpt-'.$hier.'.txt')) 
{
	unlink('cmpt-'.$hier.'.txt'); // supprime le fichier d'hier
}
/**************************************/
if(file_exists('cmpt_visites_total.txt')) // si le fichier competur total existe
{
    $compteur_ft = fopen('cmpt_visites_total.txt', 'r+'); //on l'ouvre
    $comptet = fgets($compteur_ft);	// on recupere la valeur qui y est
}
else // sinon on le cree
{
        $compteur_ft = fopen('cmpt_visites_total.txt', 'a+');
        $comptet = 1; // on l'initialise a un
		fputs ($compteur_ft, $ini); 
		//
}
/**************************************/
if(file_exists('cmpt-'.$date.'.txt')) // si un fichier d'aujourd'hui existe
{
    $compteur_f = fopen('cmpt-'.$date.'.txt', 'r+'); // on l'ouvre
    $compte = fgets($compteur_f); // on récupere la valeur qui y est
}
else //sinon on le cree
{
        $compteur_f = fopen('cmpt-'.$date.'.txt', 'a+');
        $compte = 1;
		fputs ($compteur_f, $ini); 
		//
}
if(!isset($_SESSION['compteur_de_visitea'])) // pour chaque nouvelle session on ecrit dans les deux fichiers
{
        $_SESSION['compteur_de_visitea'] = 'visite';
        $compte++;
        $comptet++;
        fseek($compteur_f, 1);
        fputs($compteur_f, $compte); // fichier compteur journalier
		fseek($compteur_ft, 1);
        fputs($compteur_ft, $comptet); // fichier compteur total
}
fclose($compteur_f);
fclose($compteur_ft);
echo "<span style=\"position: relative; right:-60px; top:7px; color:#FBA002;\" title=\"Total visite : $comptet ($compte aujourd hui)\"> 
		Visites : $comptet <span style=\"color:green\">($compte) </span>
	</span>";
?>

Conclusion :


Merci de faire des suggestions et critiques

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

floflode69
Messages postés
24
Date d'inscription
lundi 9 juillet 2012
Statut
Membre
Dernière intervention
20 août 2014
-
il est bien
youkc
Messages postés
46
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
15 août 2012
-
@PLG10: c'est bien !

moi on avait demandé de faire un compteur de visites par @IP et les enregistrer dans une base de donnés mais arrivé a plus de 1000 visites ça commence a surcharger la base et j'ai pensé a faire avec les fichiers.

comme tu as mis ça en deux fichier et faire éventuellement quelque modifications je croix que ça serai intéressant que tu poste ça comme la version 2 de ce code.
Merci !
pgl10
Messages postés
310
Date d'inscription
samedi 18 décembre 2004
Statut
Membre
Dernière intervention
6 juillet 2019
1 -
@Julien39 : Tout à fait d'accord avec ton commentaire bien justifié. Le risque de plusieurs visiteurs ayant la même adresse IP est faible mais quand cela arrive c'est une erreur que je ne sais pas traiter et que j'admets faute de mieux. Et pour limiter les calculs je n'affiche les statistiques de visites qu'à la demande et non pas systématiquement. Ma solution est davantage orientée vers la géolocalisation des visiteurs, ce qui est maintenant chose faite.
@Youkc : j'aime bien cette solution qui compte le nombre de "visiteurs-sessions". Si le même visiteur visite plusieurs pages dans la même session cela compte pour une seule visite, mais s'il revient dans dans une autre session cela compte pour une nouvelle visite. C'est un décompte qui conviendra assez souvent pour beaucoup d'utilisateurs. A noter que j'ai remplacé dans ma copie les : fseek($compteur_f, 1); par : fseek($compteur_f, 0); et que j'ai remplacé pour moi le fichier compteur.php par deux fichiers : compteur.php sans aucun affichage et afficheur.php pour afficher les nombres de visiteurs-sessions où je veux dans la page visitée. En résumé : j'aime bien cette solution pour les cas prévus avec les conditions d'emploi déjà énoncées. L'absence de BD est un avantage intéressant.
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
249 -
@youkc : C'est une erreur assez classique que font bon nombre de débutants, rassure toi, tu n'es pas le seul. Il n'est pas toujours évident d'imaginer ton application en mode multi-utilisateurs.

@pgl10 : oui, avec un fichier par utilisateur, on règle en partie le problème des accès concurrents, en effet, même avec un fichier par adresse IP, tu n'es pas a l'abri de tomber sur plusieurs utilisateurs qui utilisent un même proxy, mais ça vrai que malgré tout, ca limite quand même grandement le risque. Par contre, ça devient vraiment lourd à gérer et tu es obligé de faire beaucoup d'I/O pour calculer le nombre total de visites.
youkc
Messages postés
46
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
15 août 2012
-
Salut !

Merci pour vos remarques et suggestions.
PunKeel merci pour ces fonctions .
Julien39 j'ai pas pensé aux accès concurrents ce qui peut fausser le calcul.

('-_-') : "Qui ne sait pas trouvera à apprendre."

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.