Aller au contenu

PHP, compter le nbr de visiteurs


ran-tan-plan

Messages recommandés

Dans mon script php, j'aimerais compter le nombre de visiteurs qui sont actuellement en train de visiter le site. Chaque visiteur, qu'il soit loggé ou pas, a plusieures variables session, comme par exemple $_SESSION['id']

ce que je voudrais, c'est compter le nombre de $_SESSION['id']. C'est possible?

Si non, faudrait que je passe par une base de données. Y a moyen de faire en sorte qu'un champ mysql se supprime automatiquement apres 5 minutes?

Lien vers le commentaire
Partager sur d’autres sites

Pour compter le nombre de sessions ouvertes :

sur toutes les pages met :

<?
session_start(); // ouverture de la session
?>

et à lendroit où tu veut mettre le compteur :

<?
if ($fp=opendir(session_save_path())) { // ouverture du dossier où sont stocké les fichiers des sessions
  $count=0; // mise à 0 du compteur
  $session_timeout = 5*60; // temps de validité d'une session (ici 5*60 secondes soit 5 min)
  while (($file=readdir($fp))!==false) { // on liste les fichiers du répertoire
     if ($file!="." && $file!="..") {
        if (time()-fileatime(session_save_path()."/".$file)<$session_timeout) $count++; // si la date du dernier accès au fichier de la session est < à 5 min on incrémente le compteur
     }
  }
}
echo $count; // et on affiche le résulat
?>

Lien vers le commentaire
Partager sur d’autres sites

y a un bug dans ton script mais j'arrive pas a le trouver. Ca m'a l'air d'etre quelque part dans le while()

En fait il me trouve aucune session. Il affiche toujours 0 à la fin, meme si j'ai 2 fichier session.

autre chose, si je modifie ton code comme ca:

while (($file=readdir($fp)!==FALSE))    // on liste les fichiers du répertoire
     {
       if ($file!="." && $file!="..")
       {
                                      
         if ( (time()-fileatime(session_save_path()."/".$file)) < $session_timeout )
           $count++;
       } 
           print session_save_path()."/".$file;
     }

la il affiche ceci

c:/temp/1c:/temp/1c:/temp/1c:/temp/1

bref, il trouve 4 fichiers, et il y en a en fait que 2

et ils ne s'appellent pas 1, mais un truc du genre "sess_6f37c596bff60dcce48c83f36e841498"

tu vois pourquoi?

Lien vers le commentaire
Partager sur d’autres sites

En effet j'avai une petite erreur dans le while, il faut mettre :

while (($file=readdir($fp))!==false) {

à la place de

while (($file=readdir($fp)!==false)) {

une ) n'était pas à la bonne place.

J'ai édité ma source au dessus par la même occasion

Voila, là ça marche :)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...