Newsgroup: it.comp.www.php
Titolo: quanti utenti on-line?

Salve a tutti,
vorrei inserire nella mia home page un contatore di quanti utenti sono
on-line, ma non vorrei usare le tabelle MySQL, avevo pensato di usare la
sessioni, ma come si potrebbe fare?
Grazie a tutti.

Io utilizzo questo e va molto bene, inoltre non
sfrutta MySql....l'ho leggermente modificato alle
mie esigienze:
Max
<?
//--------------------------------------------------------------------------
-------------------------
//
// CE SCRIPT RETOURNE LE NOMBRE DE VISITEURS ACTUELLEMENT
// PRESENTS SUR LE SITE ET MEMORISE LE MEILLEUR SCORE
//
// Ce script peut être appelé de 3 façons :
//
// - MISE A JOUR DU COMPTEUR ET AFFICHAGE DU NOMBRE DE CONNECTES
// Insérez le code Javascript suivant dans votre page :
// <SCRIPT language="Javascript"
src="
http://www.votresite.com/nbconnectes.php3?action=show
"></SCRIPT>
//
// - MISE A JOUR DU COMPTEUR SANS AFFICHER LE NOMBRE DE CONNECTES
// Insérez le code Javascript suivant dans votre page :
// <SCRIPT language="Javascript"
src="
http://www.votresite.com/nbconnectes.php3?action=hide
"></SCRIPT>
//
// - VISUALISATION DE VOTRE RECORD
// Saisissez l'url suivante dans votre naviguateur :
// 
http://www.votresite.com/nbconnectes.php3?action=admin
//  Ce qui affichera par exemple :
// "Votre record est : 12 visiteurs simultanés le 21/08/2000 à 12h05".
//
//
// NB : TOUTES LES PAGES DE VOTRE SITE DOIVENT CONTENIR
//        UN DES 2 CODES JAVASCRIPT CI-DESSUS, ENTRE LES BALISES <BODY> ET
</BODY>
//
//         MODIFIEZ LES VARIABLES DE LA PARTIE "VARIABLES PARAMETRABLES"
//
//        SOUS LINUX/UNIX, IL EST POSSIBLE QUE LES FICHIERS DE DONNEES
"data.txt"
//        ET DE CONSERVATION DU RECORD "record.txt" NE PUISSENT PAS ETRE
CREE PAR
//        CE SCRIPT POUR DES RAISONS DE DROIT. DANS CE CAS, EFFECTUEZ LES
COMMANDES
//        SUIVANTES DANS LE MEME REPERTOIRE QUE CE SCRIPT :
//        touch data.txt record.txt
//        chmod 666 data.txt record.txt
//
// Jean-François GAZET
//
//--------------------------------------------------------------------------
-------------------------
//------------------------------------------------------------------
//  VARIABLES PARAMETRABLES
//------------------------------------------------------------------
// laps de temps en secondes où un visiteur est considéré comme connecté
// Time in seconds while a visitor is considered as connectes
$laps=300;
// chemin du fichier contenant les adresses IP et la date d'expiration des
visiteurs
// (il sera créé automatiquement par défaut dans le même répertoire que ce
script)
// data file containing IP adresses and expired times (created by this
script)
$data="data.txt";
// chemin du fichier conservant le record des visiteurs
// (il sera créé automatiquement par défaut dans le même répertoire que ce
script)
// data file containing the high score (created by this script)
$record="record.txt";
//------------------------------------------------------------------
// INITIALISATION DES PARAMETRES
// NE PAS MODIFIER LA SUITE
// DO NOT MODIFY UNDER THIS
//------------------------------------------------------------------
// temps actuel en secondes
$now=time();
// date d'expiration en secondes
$expire=$now+$laps;
// initialisation du compteur
$cpt=0;
//-------------------------------------------------------------------
// CAS : SCRIPT APPELE PAR LE JAVASCRIPT
//-------------------------------------------------------------------
if ($action=="show"||$action=="hide")
 {
 // --------------LECTURE DU FICHIER DATA-----------------------
 if(file_exists($data))
  {
  $fp=fopen("$data","r");
  while (!feof ($fp))
   {
   $buffer = fgets($fp, 4096);
   list ($ip_tmp, $expire_tmp)=split('\|',$buffer);
   if($ip_tmp!=$REMOTE_ADDR && $expire_tmp>$now)
    {
    $fichier[]="$ip_tmp|$expire_tmp";
    $cpt++;
    }
   }
  fclose ($fp);
  }
 // ecriture du fichier data
 $fp=fopen("$data","w");
 if (flock($fp, 2))
  {
  if(is_array($fichier))
   {
   while (list ($key, $val) = each ($fichier))
    {
    fputs($fp,$val);
        }
      }
      // On ajoute une ligne : celle du visiteur qui appelle ce script
      $cpt++;
      fputs($fp,"$REMOTE_ADDR|$expire\n");
      }
 flock($fp, 3);
 fclose($fp);
 // ----------------LECTURE DU RECORD-----------------------------
 $new_record="";
 if(file_exists($record))
  {
  $fp=fopen("$record","r");
  while (!feof ($fp))
   {
   $buffer = fgets($fp, 4096);
   list ($cpt_tmp, $date_tmp)=split('\|',$buffer);
   if($cpt_tmp<=$cpt){$new_record="$cpt|$now";}
   }
  fclose ($fp);
  }
 else
  {
  // creation du fichier record vide
  $fp=fopen("$record","w");
  if (flock($fp, 2))
   {
   fputs($fp,"$cpt|$now");
   }
  flock($fp, 3);
  fclose($fp);
  }
 // ecriture du fichier record
 if($new_record!="")
  {
  $fp=fopen("$record","w");
  if (flock($fp, 2))
   {
   fputs($fp,"$new_record");
   }
  flock($fp, 3);
  fclose($fp);
  }
 // ------------------VISUALIZZA IL NUMERO DEGLI UTENTI
CONNESSI------------------
 if($action!="hide"){echo "document.write('$cpt');";}
 }
//-------------------------------------------------------------------
// CAS : ON CONSULTE LE MEILLEUR SCORE
//-------------------------------------------------------------------
else if($action=="admin")
 {
 // ----------------LECTURE DU RECORD-----------------------------
 if(file_exists($record))
  {
  $fp=fopen("$record","r");
  while (!feof ($fp))
   {
   $buffer = fgets($fp, 4096);
   list ($cpt, $date)=split('\|',$buffer);
   $date=date("d/m/Y a H:i",$date);
   echo  "<HTML>
        <HEAD>
          <TITLE>Score to be beaten</TITLE>
        </HEAD>
        <BODY>
           <FONT face=\"Verdana\" size=\"2\">
           Your record is : $cpt simultaneous visitors it $date !
           </FONT>
        </BODY>
     </HTML>";
   }
  fclose ($fp);
  }
 //-------------SI-LE-FICHIER-N'EXISTE-PAS------------------------
 else
  {
  echo  "<HTML>
       <HEAD>
         <TITLE>Number of connections</TITLE>
       </HEAD>
       <BODY>
          <FONT face=\"Verdana\" size=\"2\">
                    The file of the records was not creé.
                           You must call script by the Javascript method.
          </FONT>
       </BODY>
    </HTML>";
  }
 }
//-------------------------------------------------------------------
// CAS : ON N'A PAS APPELE CE SCRIPT
//  COMME INDIQUE EN HAUT DE PAGE !  :o)
//  C'EST A DIRE PAR LES METHODES JAVASCRIPT
//  OU LA METHODE url?action=admin
//-------------------------------------------------------------------
else
 {
 echo "<HTML><HEAD><TITLE>Nombre de connectés</TITLE></HEAD>
 <BODY><FONT face=\"Verdana\" size=2>
 CE SCRIPT RETOURNE LE NOMBRE DE VISITEURS ACTUELLEMENT <BR>
 PRESENTS SUR LE SITE ET MEMORISE LE MEILLEUR SCORE <BR>
 <BR>
 Ce script peut être appelé de 3 façons :<BR>
 <BR>
 - MISE A JOUR DU COMPTEUR ET AFFICHAGE DU NOMBRE DE CONNECTES<BR>
 Insérez le code Javascript suivant dans votre page : <BR>
 &lt;SCRIPT language=&quot;Javascript&quot;
src=&quot;http:
www.votresite.com/nbconnectes.php3?action=show&quot;&gt;&lt;/
SCRIPT&gt;<BR>
 <BR>
 - MISE A JOUR DU COMPTEUR SANS AFFICHER LE NOMBRE DE CONNECTES<BR>
 Insérez le code Javascript suivant dans votre page : <BR>
 &lt;SCRIPT language=&quot;Javascript&quot;
src=&quot;http:
www.votresite.com/nbconnectes.php3?action=hide&quot;&gt;&lt;/
SCRIPT&gt;<BR>
 <BR>
 - VISUALISATION DE VOTRE RECORD<BR>
 Saisissez l'url suivante dans votre naviguateur :<BR>
 http:
www.votresite.com/nbconnectes.php3?action=admin
<BR>
  Ce qui affichera par exemple :<BR>
 &quot;Votre record est : 12 visiteurs simultanés le 21/08/2000 à
12h05&quot;.<BR>
 <BR>
 <BR>
 NB : TOUTES LES PAGES DE VOTRE SITE DOIVENT CONTENIR<BR>
        UN DES 2 CODES JAVASCRIPT CI-DESSUS<BR>
  <BR>
 <BR>
 Jean-François GAZET<BR>
 <a href=\"mailto:
webm...@webjeff.org
\">
webm...@webjeff.org
</a> <BR>
 <a href=\"
http://www.webjeff.org
\">
http://www.webjeff.org
</a>  <BR>
 </FONT>
 </BODY>
 </HTML>";
 }
?>