Comprendre le bitcoin, l'intelligence artificielle, faire un site web... En 3 minutes en vidéo!

Compter les visiteurs en ligne sur son site en PHP / MySQL

Tutoriaux > PHP / MySQL > Compter les visiteurs en ligne sur son site en PHP / MySQL

Compter les visiteurs en ligne sur son site en PHP / MySQL
Comment créer un compteur de visiteurs connectés sur le site en temps réel (ou presque). Réalisation simple en PHP avec une base de données MySQL.

Nous allons réaliser un compteur de visiteurs en ligne, qui se base sur l'activité des cinq dernières minutes des visiteurs de votre site (ou 3 minutes, ou autre, comme vous le voulez en faitSourire )

Mise en place des tables nécessaires pour compteur

Les sessions


Nous allons nous baser sur les sessions des utilisateurs. A chaque fois que quelqu'un se connecte à votre site internet, un session_id lui est attribué qui permet au serveur web de le reconnaître de manière unique toute la durée de sa visite ! C'est ce qui permet d'utiliser les variables de sessions dans un script.

Mais ce n'est pas ce qui nous intéresse ici, les variables de session. Nous allons juste utiliser le session_id des utilisateurs pour les intégrer dans une base de données et contrôler quand a eu lieu leur dernière activité.

Activation des sessions


Nous devons activer les sessions pour pouvoir récupérer des variables de sessions. C'est un processus très simple, il vous suffit de mettre le code suivant avant tout autre code PHP sur vos pages :

Code

session_start();


Structure de la base de données


Nous tenons compte du fait ici que vous savez déjà vous connecter à une base de données MySQL.

Nous avons simplement besoin de trois choses dans la base de données :

  • Le session_id
  • La date de "dernier mouvement"
  • La dernière page visitée (facultatif)


Nous avons rajouté la dernière page visitée pour pimenter un peu le tutorielSourire

Allez, créons la table. Voici le code brut de création de la table, à vous d'ajouter ce que vous voulez si vous souhaitez plus d'informations (Si vos visiteurs sont authentifiés, cela peut être le user_id par exemple...) !

CREATE TABLE `live_compteur` (
`session_id` VARCHAR(255) NOT NULL,
`derniere_activite` INT(15) NOT NULL,
`derniere_page` VARCHAR(255) NOT NULL,
PRIMARY KEY (`session_id`)
)
ENGINE = InnoDB;


Nous n'allons pas commenter les codes MySQL utilisés, si vous ne les comprenez pas, référez vous à des cours de SQLSourire Nous avons utilisé INT(15) pour la dernière activité car nous allons utiliser des timestamp dans ce cas de figure. Vous pouvez aussi utiliser du DATETIME si vous le souhaitez, mais il vous faudra un peu modifier le scriptClin d'oeil

Scripts PHP

Petite mise en garde : Ce script n'est peut être pas fait pour être copié/collé directement (normalement il devrait fonctionner, mais bonContent) car nous ne l'avons pas profondément testé, et pour votre apprentissage il vaut peut être mieux aussi le taper vous mêmes pour corriger les erreurs au besoinClin d'oeil

Script de mise à jour des données


Ce script est à mettre sur toutes les pages de votre site, car c'est lui qui mettra à jour les données de la base. Pour l'expliquer rapidement, à chaque nouvelle page chargée, le session_id, la page et la date sont enregistrées dans la base de données. Le ON DUPLICATE KEY UPDATE permet de mettre à jour la base à la place de créer un nouvel enregistrement si un enregistrement avec le même session_id existe déjà !

<?php
#INSERER LES INFOS DU VISITEUR OU METTRE A JOUR SI BESOIN
$insertion = "INSERT INTO live_compteur SET session_id = '".session_id()."', derniere_activite = ".time().", derniere_page = '".$_SERVER[REQUEST_URI]."' ON DUPLICATE KEY UPDATE derniere_activite = ".time();

mysql_query($insertion);
?>


Nous avons simplement mis un mysql_query pour l'exécution de la requête, mais cela dépend encore une fois de vos propres réglages.

Récupération des informations et compteur de visiteurs en ligne


Voilà, les données sont mises à jour sur toutes les pages visitées, et chaque visiteur a donc sa ligne dans la base. Nous allons maintenant créer le compteur en lui même, en exploitant les données de cette base nouvellement créée ! Encore une fois vous verrez que c'est plutôt simple...

<?php
#COMPTER LES LIGNES DONT LA DERNIERE ACTIVITE REMONTE A MOINS DE 5 MINUTES
$compteur = "SELECT COUNT(*) FROM live_compteur WHERE derniere_activite > ".(time()-5*60);
#EXECUTION REQUETE
$compteur = mysql_query($compteur);
#METTRE DANS UN TABLEAU
$compteur = mysql_fetch_array($compteur);
#AFFICHER LE RESULTAT
echo 'Il y a '.$compteur[0].' visiteurs actuellement sur le site';


Pour aller plus loin

Ce qui a été fait plus haut est vraiment la version basique du compteur.
Vous pouvez l'approfondir en faisant une liste des visiteurs, nous vous avons un peu ouvert la voie en sauvegardant aussi la dernière page visitée, nous ne l'exploitons pas dans le compteur, mais si vous en avez besoin, allez-y... Vous pouvez aussi par exemple garder les IP des visiteurs, etc.

Par Pouzy , Le 29 Mars 2010 à 12h22
Ce tutoriel est la propriété d'Aidoweb et ne peut en aucun cas être copié.

Retour à PHP / MySQL

Ajouter un commentaire

Suite a un fort volume de spam, les commentaires d'invités sont pour le moment désactivés. Vous devez vous inscrire ou vous identifier pour pouvoir commenter cet article, ou demander du support.

Lectures recommandées

Commentaires sur cet article

Aucun commentaire pour le moment.

Tutoriaux > PHP / MySQL > Compter les visiteurs en ligne sur son site en PHP / MySQL