Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zér0 > Les tutoriels > Non-Officiels > Site Web > PHP > Points particuliers > Lecture du tutoriel

Faire un compteur de visiteurs connectés avec des fichiers

Avatar
Auteur : Adri22
Créé : le 30/12/2007 22:31:02
Modifié : le 04/02/2008 12:04:42
Noter et commenter ce tutoriel
Imprimer ce tutoriel
Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Salut :) !

Vous savez sûrement déjà créer un compteur de visiteurs connectés avec MySQL, mais avec des fichiers, c'est plus rapide. Vous vous demandez donc comment faire ? Parfait ! Dans ce deuxième mini-tuto, je vais vous apprendre à créer votre propre compteur de visiteurs connectés, seulement avec PHP et des fichiers !
Il est recommandé d'avoir lu le tutoriel de M@teo21 sur le PHP pour suivre celui-ci.
Votre hébergeur doit aussi accepter la fonction glob();, et vous devez être hébergés sous un système Unix.
Sommaire du chapitre :

Préparation

Ne vous inquiétez pas, ce ne sera pas long :) .
Image utilisateur

Il vous suffit d'abord de créer un dossier nommé "compteur" où seront stockés les fichiers temporaires (qui serviront eux-mêmes à savoir qui est connecté).
Ensuite, il faut changer les permissions de ce dossier et les mettre à 777.

Vous pouvez bien sûr le faire en php à l'aide de ce code-là :

Code : PHP
1
2
3
<?php
mkdir('compteur', 0777);
?>


Voilà : vous êtes enfin préparés à faire votre compteur de visiteurs connectés.

Je rappelle encore une fois qu'il faut être sous un système Unix, même en local (si vous voulez tester) pour qu'il fonctionne correctement !

Le compteur en lui-même

Nous y voilà ! C'est dans cette partie que l'essentiel sera fait ; cependant, il faut quand même avoir fait ce qui est décrit dans la première sous-partie.

1. Récupération des données utiles



Avant de commencer, il faut certaines données essentielles au bon fonctionnement du script, telles que les fichiers temporaires déjà présents, le timestamp qu'il sera dans 5 minutes et enfin, on déclare la variable $nbConnectes qui contiendra le nombre de connectés.

Pour information, je mets les codes dans une fonction pour une utilisation plus facile pour après.
Code : PHP
1
2
3
4
5
6
7
8
9
<?php
// Fonction qui calcule le nombre de connectés puis qui renvoie le résultat
function visiteursConnectes() 
    {
        $timestampCinqMinutes = time()-(60*5); // timestamp qu'il sera dans 5 minutes
        $fichierConnectes = glob('compteur/*.tmp'); // Récupération des fichiers temporaires déjà présents
        $nbConnectes = 0; // Déclaration de la variable qui contiendra le nombre de connectés
    }
?>


Voici donc la base de notre fonction.
Par ailleurs, si vous voulez en savoir plus sur la fonction glob();, rendez-vous ici.

2. Déjà connecté ou non ?



Ici, on regarde si le visiteur fait déjà partie des visiteurs connectés ; si oui, on met à jour la date de dernière modification du fichier, sinon, on crée un fichier pour l'utilisateur.

Notez que j'utilise l'IP pour reconnaître le visiteur alors que je pourrais utiliser l'id de session. Cependant l'IP reste plus fiable, car il suffit de fermer le navigateur et de le réouvrir pour que notre id de session change.
Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
<?php
// Fonction qui calcule le nombre de connectés puis qui renvoie le résultat
function visiteursConnectes()
    {
        $timestampCinqMinutes = time()-(60*5); // timestamp qu'il sera dans 5 minutes
        $fichierConnectes = glob('compteur/*.tmp'); // Récupération des fichiers temporaires déjà présents
        $nbConnectes = 0; // Déclaration de la variable qui contiendra le nombre de connectés
 
        if(in_array('compteur/'.$_SERVER['REMOTE_ADDR'].'.tmp', $fichiersConnectes)) // Si le visiteur est déjà connecté
            {
                touch('compteur/'.$_SERVER['REMOTE_ADDR'].'.tmp'); // On modifie la date de dernière modification du fichier
            }
        else // Sinon
            {
                $fichierVisiteur = fopen('compteur/'.$_SERVER['REMOTE_ADDR'].'.tmp', 'x+'); // On crée un nouveau fichier
                fclose($file);
            }
    }
?>


Voilà, il ne reste plus qu'à compter et on y est enfin :D .

3. Comptage des connectés



Et enfin, on refait une liste des fichiers temporaires contenus dans "compteur", puis on fait une boucle. Si le fichier a été modifié dans les 5 dernières minutes, alors on incrémente la valeur de $nbConnectes ; sinon, on le supprime et on ne touche pas à la variable $nbConnectes.

Code : PHP
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
// Fonction qui calcule le nombre de connectés puis qui renvoie le résultat
function visiteursConnectes()
    {
        $timestampCinqMinutes = time()-(60*5); // timestamp qu'il sera dans 5 minutes
        $fichiersConnectes = glob('compteur/*.tmp'); // Récupération des fichiers temporaires déjà présents
        $nbConnectes = 0; // Déclaration de la variable qui contiendra le nombre de connectés
 
        if(in_array('compteur/'.$_SERVER['REMOTE_ADDR'].'.tmp', $fichiersConnectes)) // Si le visiteur est déjà connecté
            {
                touch('compteur/'.$_SERVER['REMOTE_ADDR'].'.tmp'); // On modifie la date de dernière modification du fichier
            }
        else // Sinon
            {
                $fichierVisiteur = fopen('compteur/'.$_SERVER['REMOTE_ADDR'].'.tmp', 'x+'); // On crée un nouveau fichier
                fclose($file);
            }
 
        $fichiersConnectes = glob('compteur/*.tmp'); // On renouvelle la liste des fichiers temporaires
 
        foreach($fichiersConnectes AS $fichier)
                {
                        if(filemtime($fichier) >= $timestampCinqMinutes) $nbConnectes++; // Si le fichier a été modifié dans les 5 dernières minutes, on incrémente $nbConnectes
                        else unlink($fichier); // Sinon on le supprime
                }
 
        return $nbConnectes;
    }
?>


Voilà, votre compteur est prêt à être utilisé !

4. Utilisation



C'est bien beau tout ça, mais comment ça marche ? :euh:
C'est simple, il y a deux solutions : soit vous voulez juste calculer le nombre de visiteurs connectés, soit vous voulez calculer et afficher le résultat.



Voilà : vous avez maintenant un compteur et vous savez l'utiliser !

Q.C.M.

Pourquoi utiliser un compteur avec des fichiers plutôt qu'avec mySQL ?
Comment modifier la date de dernière modification d'un fichier ?


Voilà : vous savez maintenant créer un compteur de visiteurs connectés simple et avec les fichiers :) !
A bientôt et bon surf sur le SdZ ;) !
N'hésitez pas à me faire part de vos questions et problèmes dans les commentaires ;) !
Auteur : Adri22
Noter et commenter ce tutoriel
Imprimer ce tutoriel

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | Fil RSS | XHTML 1.0 | CSS 2.0
Édité par Simple IT SARL : Nous contacter | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 594 Zéros connectés | Requêtes SQL 9 requêtes | Temps de génération de la page : Total (SQL) 0.0632s (0.0516s)