SELFPHP

Besucherstatistik integrieren

 
Informationsseite nach unten Autor
nach unten Beispiel
nach unten Beschreibung
nach unten Download
nach unten

Autor

Name: Carsten Franke
Email: mail@dbCF.de
Website: http://www.dbCF.de/


nach obennach unten

Beispiel

Anzeigebeispiel: So sieht's aus (Online)

<?php
 
// wie lange gilt wird eine ip nicht als neuer besucher gewertet (in minuten)
 
$t_counter=120;
 
// wie lange gilt besucher als online (in minuten)
 
$t_user_online=5;
 
// pfad zum besucherzaehler
 
$p_counter='counter.log';
 
// pfad zur datei, die maximale zahl gleichzeitiger nutzer speichert
 
$p_counter_max='counter_max.log';
 
// pfad zur datei, die die ips des besucherzaehlers speichert
 
$p_ips_counter='ips_counter.log';
 
// pfad zur datei, die die ips der aktuell auf der seite befindlichen user speichert
 
$p_ips_user_online='ips_user_online.log';

 
// nicht vorhandene dateien erstellen
 // wenn dateien vorhanden sind und skript einwandfrei laeuft, dann diese zeilen auskommentieren (// davor)
 
if (!file_exists($p_counter))
  { 
$fh=fopen($p_counter'w'); fwrite($fh"0"); fclose($fh); }
 if (!
file_exists($p_counter_max))
  { 
$fh=fopen($p_counter_max'w'); fwrite($fhtime().'#0'); fclose($fh); }
 if (!
file_exists($p_ips_counter))
  { 
$fh=fopen($p_ips_counter'w'); fclose($fh); }
 if (!
file_exists($p_ips_user_online))
  { 
$fh=fopen($p_ips_user_online'w'); fclose($fh); }

 
// daten einlesen
 
$temp=file($p_counter); $counter=$temp[0];
 
$temp=file($p_counter_max); $counter_max=explode('#'$temp[0]);
 
$ips_counter=file($p_ips_counter);
 
$ips_user_online=file($p_ips_user_online);
 
$ip=$_SERVER['REMOTE_ADDR'];

 
// user online - noch gueltige ips raussuchen
 
$i=0$j=0$ip_exists=0;
 while (
$i count($ips_user_online))
  {
   
$temp=explode('#'trim($ips_user_online[$i]));
   if (
time() < $temp[0]+$t_user_online*60)
    {
     
$ips[$j]=$ips_user_online[$i]; $j++;
     
// wenn ip des aktuellen besuchers gefunden, dann vermerken
     
if ($temp[1]==$ip) { $ip_exists=1; }
    }
   
$i++;
  }
 
// wenn aktuelle ip nicht gefunden wurde ($ip_exists==0) oder alle entsorgt wurden, dann diese hinzufuegen
 
if (!isset($ips) && $ip_exists==|| $ip_exists==0)
  { 
$ips[$i]=time().'#'.$ip; }
 
// anzahl felder von $ips entspricht anzahl der user online
 
$user_online=count($ips);
 
// wenn aktuelle zahl besucher groesser als letztes maximum, dann ueberschreiben und neu einlesen
 
if ($user_online>$counter_max[1])
  {
   
$fh=fopen($p_counter_max'w');
    
fwrite($fhtime().'#'.$user_online);
   
fclose($fh);
   
$temp=file($p_counter_max); $counter_max=explode('#'$temp[0]);
  }
 
// die ips speichern
 
$fh=fopen($p_ips_user_online'w');
  
fwrite($fhjoin("\n"$ips));
 
fclose($fh);

 
// besucherzaehler - noch gueltige ips raussuchen
 
$i=0$j=0$ip_exists=0;
 while (
$i count($ips_counter))
  {
   
$temp=explode('#'trim($ips_counter[$i]));
   if (
time() < $temp[0]+$t_counter*60)
    {
     
$ips[$j]=$ips_counter[$i]; $j++;
     
// wenn ip des aktuellen besuchers gefunden, dann vermerken
     
if ($temp[1]==$ip) { $ip_exists=1; }
    }
   
$i++;
  }
 
// wenn aktuelle ip nicht gefunden wurde ($ip_exists==0) oder alle entsorgt wurden, dann diese hinzufuegen
 
if (!isset($ips) && $ip_exists==|| $ip_exists==0)
  {
   
$ips[$i]=time().'#'.$ip;
   
$counter++;
   
$fh=fopen($p_counter'w');
    
fwrite($fh$counter);
   
fclose($fh);
  }
 
// die ips speichern
 
$fh=fopen($p_ips_counter'w');
  
fwrite($fhjoin("\n"$ips));
 
fclose($fh);

 
// ausgabe der besucherdaten
 
echo 'Es sind '.$user_online.' Nutzer online.<br>';
 echo 
'Seit dem 22. Mai 2003 waren '.$counter.' Besucher auf dieser Seite.<br>';
 echo 
'Größte Zahl gleichzeitiger Besucher war am '.date("d.m.Y"$counter_max[0]).' mit '.$counter_max[1].' Besuchern.';
?>


nach obennach unten

Beschreibung

Diese kleine Statistik zählt die Anzahl Besucher. Gleichzeitig wird noch ermittelt, wie viele Leute gerade auf der Seite sind und was das Maximum an gleichzeitigen Besuchern war (samt Datum). Das Ganze funktioniert ohne mySQL oder änlichen Datenbanksystemen. Das Skript benötigt nur Schreibrechte.

In den ersten Zeilen des Skriptes werden diverse Parameter festgelegt, welche angepasst werden können. Dazu gehöhrt zum Beispiel, wie lange ein Besucher als online gilt ($t_user_online) oder wo und unter welchem Namen welche Datei gespeichert werden soll (fangen mit $p_ an) Es erfolgt keine Überprüfung dieser Werte, also heißt es selber darauf zu achten.

Beim ersten Lauf des Skriptes werden die vier Dateien zur Datenspeicherung erstellt. Diese Zeilen sollten - wenn Durchlauf erfolgreich - auskommentiert werden, da es sonst zu Fehlern der Funktion file_exists() kommen kann! Einfach // vor die vier Zeilen schreiben, die mit $p_ (p steht für path) anfangen.

Im Anschluss daran werden die bereits gespeicherten Daten ausgelesen.
Die Aussortierung der nicht mehr gütigen IPs erfolgt durch Kontrolle der gespeicherten Uhrzeit und der aktuellen. Die Speicherung der IPs samt Uhrzeit sieht in den beiden dafür vorgesehenen Datei ($p_ips_counter und $p_ips_user_online) wie folgt aus:
1053793433#169.254.244.235
1053793901#192.168.12.29
Also zu erst der Zeitstempel und dann die IP. Jede noch gütige IP wird in einem neuen Array ($ips) erfasst und die Daten daraus dann in der dafür vorgesehenen Datei ($p_ips_counter und $p_ips_user_online) gespeichert. Nebenbei wird geprüft, ob die IP des aktuellen Besuchers in der Datenbank vorhanden ist. Wenn sie nicht vorhanden ist oder aufgrund von Zeitüberschreitung nicht übernommen wurde, dann wird diese IP noch in das Array hinzugefügt.
Bei der Auswertung der IPs für die User-Online-Statistik erfolgen noch zwei weitere Schritte: Zum einen wird die Anzahl dieser gleichzeitigen Besucher aus der Anzahl Felder von $ips ermittelt (Funktion count()) und in $user_online gespeichert. Des weiteren wird geprüft, ob die aktuelle Zahl Besucher größer ist, als die bisherige (in $counter_max aus Datei $p_counter_max). Wenn ja, dann wird diese samt Zeitstempel gespeichert.


Am Ende befinden sich folgende Daten in diesen Variablen:
Anzahl Besucher: $counter aktuelle Zahl Besucher auf der Seite: $user_online Maximum gleichzeitiger Besucher: $counter_max[1] Zeitpunkt des Maximums: $counter_max[0]

Zur Formatierung des Zeitstempels empfiehlt sich die Funktion date()
Die hier genutzte Formatierung (date("d.m.Y", $counter_max[0])) gibt zum Beispiel 29.05.2003 aus.

Dieses Skript kann unter Beibehaltung des namens mittels <?php include('besucherzaehler.php'); ?> integriert werden.


nach obennach unten

Download

Der Download beeinhaltet folgende Dateien:
  • besucherzaehler_integrieren_script.php
  • besucherzaehler_integrieren_erklaerung.txt
  • readme.txt
Download starten


nach oben
weiter:weiter Seite Tipps & Tricks
zurück:zurück Seite Statistiken
 

© 2001, 2002, 2003
E-Mail Damir Enseleit, mail@selfphp.com ,  Impressum