Von selfPHP wird ein Counter als Freeware angeboten.
Ich habe ihn versteckt in der noch im lokalen Netzwerk befindlichen Seite eingebaut und er funktioniert einfach geradeaus.
Die Funktionen sind absolut ausreichend und sogar die Unterdrückung gleicher IP`s auf einen bestimmten Zeitraum hinweg wurde
unterdrückt (das bieten manche durch Werbung finanzierte Counter aus dem Netz nicht unbedingt ;-) )
Du mußt allerdings einen eigenen Webserver einrichten, um den Counter das erste mal auszuführen damit er die entsprechenden
Log-Dateien erstellt..
Den Quelltext ansich habe ich später noch in eine hübsche verschachtelte Tabelle eingebaut in der Optik der von mri
erstellten Webseite (damit der Chef was feines zu gucken hat ;-) )
so, nun der Quelltext:
<?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($fh, time().'#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==1 || $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($fh, time().'#'.$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($fh, join("\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==1 || $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($fh, join("\n", $ips));
fclose($fh);
// ausgabe der besucherdaten
echo '
Counterstatistik '
;echo ' Anzahl Besucher insgesamt seit dem 03.11.2003: '
; echo ''.$counter.' <br>';echo ' Anzahl momentaner Besucher: '; echo ''.$user_online.'<br>';echo ' maximale Besucheranzahl
am '.date("d.m.Y", $counter_max[0]).':'; echo ' '.$counter_max[1].' <br>';
echo '<br><p align="center">IP-Adressen aller Besucher anzeigen: <a href="ips_counter.log" ><font color="#808080">Hier
klicken</font></a> <br> IP-Adressen aller auf dieser Seite befindlichen Benutzer anzeigen: <a href="ips_user_online.log"
><font color="#808080">Hier klicken</font></a> </td>';
echo '
';?>
Die Ausgabe mußt du dir selbst hübsch zurecht machen ;-)
Achja, nach dem ersten Druchlauf mußt du wie im Quelltext angegeben die Stellen die die LOG-Files erstellen auskommentieren!
Zu guter Letzt: der Ersteller von selfPHP stellt den Quelltext für umsonst zur Verfügung, möchte aber, dass wenn dieser weiter gegeben wird im originalzustand weitergeleitet wird. Tjoa, das ist er jetzt auch bis auf 1-2 <br>-Tags in der Ausgabe ;-)
con\con