Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Officiels > Site Web > Un site dynamique avec PHP ! > Toute la puissance de PHP > TP : nombre de visiteurs connectés > Lecture du tutoriel

TP : nombre de visiteurs connectés

Avatar
Auteur : M@teo21
Note : 17 / 20 (31 votes)
Visualisations : 225 434

Plus d'informations Plus d'informations
En tant que Webmaster, vous aimeriez certainement savoir combien de personnes sont connectées sur votre site.
Après tout, pourquoi pas, c'est tout à fait le genre de trucs qu'on peut faire en PHP ^^

La bonne nouvelle, c'est que c'est assez simple à faire. Mais il faut bien comprendre le fonctionnement, donc soyez attentifs à ce que je vais vous dire parce que ça ne marche peut-être pas comme vous le pensez ;)
Chapitre précédent Sommaire Chapitre suivant

Réalisation du compteur de visites

Etape 1 : prérequis



Les prérequis pour ce script sont :
Voilà, c'est tout :)
Je vous ai expliqué dans le chapitre précédent comment on faisait pour récupérer l'adresse IP grâce à une variable superglobale, vous savez donc tout ce qu'il faut pour réaliser le script !

Etape 2 : préparation du script



C'est là qu'il faut bien m'écouter, parce que le fonctionnement de ce script est un peu particulier.
On va créer une table MySQL appelée "connectes", avec seulement 2 champs :
Voici donc ce que vous devriez avoir à la création de la table :

Image utilisateur


Vous remarquerez que, exceptionnellement, il n'y a pas de champ "id". Les cas où on n'a pas besoin de champ ID sont très rares, il faut le savoir. Ici le script ne nous impose pas d'utiliser un ID, donc on n'en crée pas.

Lorsqu'elle sera en activité, votre table ressemblera à ça :

Image utilisateur


Vous voyez en fait la liste des personnes connectées sur votre site (représentées par leur adresse IP), et le timestamp qu'il était au moment où chaque personne a chargé une page sur votre site.

Maintenant, il va falloir que vous compreniez comment le script fonctionne, c'est très important. Dans l'ordre, nous allons faire ceci :
  1. A chaque fois qu'un visiteur charge une page de votre site, on regarde dans la table "connectes" si son IP est déjà inscrite. 2 cas sont possibles :
    • L'IP n'est pas dans la table : on crée une nouvelle entrée dans laquelle on met son adresse IP. On note en même temps l'heure (le timestamp) qu'il est.
    • L'IP est déjà dans la table : on ne crée pas de nouvelle entrée, on met simplement à jour le timestamp associé à son IP, pour indiquer l'heure à laquelle il vient de charger la dernière page.
  2. Ensuite, on regarde les autres adresses IP déjà enregistrées dans la table. On supprime toutes les IP qui ont été inscrites depuis plus de 5 minutes.

    Cela veut dire qu'on considère qu'un visiteur qui n'a pas chargé de nouvelle page sur le site depuis plus de 5 minutes est parti. Je sais que ça peut paraître bizarre, mais c'est comme ça qu'on fait car on n'a pas d'autres solutions.
  3. Enfin, dernière étape (la plus simple), on compte toutes les adresses IP qui restent dans la table. Ce nombre, c'est le nombre de visiteurs actuellement connectés sur votre site ! Vous n'avez plus qu'à l'afficher !
Par exemple, sur le Site du Zér0, mon compteur de connectés ressemble à ça :

Image utilisateur


Etape 3 : à vous de jouer !



Voilà, je vous ai dévoilé le fonctionnement du script, après si vous l'appliquez correctement vous allez voir (Ô surprise !) que ça fonctionne ! :D

Un dernier détail tout de même : je vous conseille de taper ce script dans une page PHP appelée "connectes.php" qui ne contiendra que ça.
Ensuite, sur chaque page de votre site, vous incluerez la page "connectes.php" comme ceci pour faire marcher le compteur : <?php include('connectes.php'); ?>

N'oubliez aucune page, car si vous ne placez pas votre compteur sur une ou plusieurs pages, il n'indiquera pas le nombre correct de personnes connectées ! (il en indiquera moins que ce qu'il y en a)


Etape 4 : correction



Correction ?
Ce script est assez simple dans la mesure où je vous ai détaillé le fonctionnement du script. Si vous appliquez ce que j'ai dit, cela ne peut que fonctionner !
Si par hasard vous avez bloqué sur un passage, ce n'est pas bien grave : le script est simple, et ce ne sont pas vos connaissances en PHP qui sont à remettre à cause. Vous avez simplement lu un peu rapidement les explications que je vous ai données plus haut :p

Voici donc le script du nombre de visiteurs connectés :

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
30
31
32
33
34
35
36
<?php
// Connexion à MySQL
mysql_connect("localhost", "sdz", "mot_de_passe");
mysql_select_db("coursphp");

// -------
// ETAPE 1 : on vérifie si l'IP se trouve déjà dans la table
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse ip du visiteur
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);

if ($donnees['nbre_entrees'] == 0) // L'ip ne se trouve pas dans la table, on va l'ajouter
{
    mysql_query('INSERT INTO connectes VALUES(\'' . $_SERVER['REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'ip se trouve déjà dans la table, on met juste à jour le timestamp
{
    mysql_query('UPDATE connectes SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER['REMOTE_ADDR'] . '\'');
}

// -------
// ETAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes

// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM connectes WHERE timestamp < ' . $timestamp_5min);

// -------
// ETAPE 3 : on compte le nombre d'ip stockées dans la table. C'est le nombre de visiteurs connectés
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM connectes');
$donnees = mysql_fetch_array($retour);


// Ouf ! On n'a plus qu'à afficher le nombre de connectés !
echo '<p>Il y a actuellement ' . $donnees['nbre_entrees'] . ' visiteurs connectés sur mon site !</p>';
?>


Comme vous pouvez le voir, le script respecte strictement les étapes que je vous ai indiquées au début de ce TP.
Il y a seulement 2 points où il fallait un peu réfléchir (rien de bien méchant :p). Voici quelques informations pour vous aider à les comprendre :

Etape 5 : améliorez ce script !



Là, je dois reconnaître que j'ai franchement pas beaucoup d'idées pour améliorer ce script :euh:
Voici ce que je peux vous proposer, mais je vous préviens que ça n'a rien de très excitant :

Vous voyez, comme quoi, même avec un petit script comme celui-ci, on peut faire des tas de choses étonnantes :lol:

J'espère que ce TP vous aura été utile, je pense que nombreux d'entre vous sont ceux qui souhaitaient avoir un tel compteur sur leur site !

Ah, et si vous rachetez Microsoft, soyez cool : pensez à moi, je ne dirais pas non si on m'offrait ne serait-ce qu'1% de l'entreprise :p
Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 19/07/2005 à 23:21:44
Modifié : le 08/09/2008 à 18:47:07
Avancement : 100%
Licence : Copie non autorisée

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | 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 433 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.1184s (0.0967s)