Wenn Sie erfahren möchten, wie oft Ihre Webseite besucht wurde, erstellen Sie sich mit Hilfe dieses Artikels einen Zähler. Zusätzlich bietet dieser Counter eine Reload-Sperre, d.h. jeder Besucher wird nur ein einziges Mal gezählt.
Mit Hilfe der Reload- oder IP-Sperre ist es unerheblich, wie oft eine Seite von einem Besucher aufgerufen wird. Der Zählerstand wird nur einmalig erhöht. So können Sie den Zähler auch auf jede Ihrer Webseiten einbinden und erfahren wie viele unterschiedliche Besucher Ihre Homepage besucht haben.
Nachstehende finden Sie den vollständigen Quellcode des Scriptes. Binden Sie diesen in Ihre Webseite(n) ein und dort, wo der aktuelle Zählerstand erscheinen soll, notieren Sie echo$Counte
<?php
$DateinameCount = "count.txt";
$DateinameIP = "ip.txt";
$Zeitsperre = 86400; // Sekunden
#######################################
$Gefunden = FALSE;
$IPListe = file($DateinameIP);
if(count($IPListe) > 0)
{
foreach($IPListe as $Zeile)
{
$GesplitteteZeile = explode("|", $Zeile);
if(($GesplitteteZeile[0]+$Zeitsperre) > time())
{
$NeueIPListe[] = trim($Zeile)."\n";
}
}
if(count($NeueIPListe) > 0)
{
foreach($NeueIPListe as $Zeile)
{
$GesplitteteZeile = explode("|", $Zeile);
if(trim($GesplitteteZeile[1]) == $_SERVER['REMOTE_ADDR'])
{
$Gefunden = TRUE;
}
}
}
}
$FilePointerIP = fopen($DateinameIP, "w");
if(count($IPListe) > 0 && count($NeueIPListe) > 0)
{
foreach($NeueIPListe as $Zeile)
{
fwrite($FilePointerIP, trim($Zeile)."\n");
}
}
if(!$Gefunden)
{
fwrite($FilePointerIP, time()."|".$_SERVER['REMOTE_ADDR']."\n");
}
fclose($FilePointerIP);
$FilePointerCount = fopen($DateinameCount, "r+");
$Counter = fread($FilePointerCount, filesize($DateinameCount));
if(!$Gefunden)
{
$Counter++;
rewind($FilePointerCount);
fwrite($FilePointerCount, $Counter);
}
fclose($FilePointerCount);
echo$Counter;
?>
Das Script benötigt zwei zusätzliche Dateien “count.txt” und “ip.txt”. In der ersten Datei wird der aktuelle Zählerstand abgespeichert, in der Zweiten die geblockten IP-Adressen. Zu beiden Dateien müssen Sie in den Zeilen 3 und 4 den Dateinamen und - falls die Dateien in einem anderen Verzeichnis als die PHP-Datei liegen - auch den Pfad angeben (z.B. “counter/count.txt”). Außerdem müssen Sie in der Variable $Zeitsperre eine Zeitspanne in Sekunden angeben, d.h. wie lange ein Besucher - nachdem er gezählt wurde - gesperrt ist.
Beim Aufruf der Webseite wird zunächst die Liste der geblockten IP-Adressen eingelesen (Z. 10). Die Datei “ip.txt” enthält pro Zeile den Zeitpunkt des Aufrufes und die IP-Adresse (durch | getrennt).
Nach dem Einlesen wird die komplette IP-Liste in einer Schleife durchgegangen (Z. 14-22), wobei “alte” IP-Adressen, deren Besuch länger als die in $Zeitsperre angegebenen Sekunden zurückliegt, nicht in den Array $NeueIPListe aufgenommen werden.
Die nächste Schleife (Z. 26-34) dient nur dazu zu ermitteln, ob die IP-Adresse des aktuellen Besuchers in der Liste der IP-Adressen enthalten ist. Falls dem so ist, wird die Variable $Gefunden auf TRUE gesetzt.
Im Anschluss daran wird die Datei “ip.txt” komplett neu erstellt und mit den aktuell gesperrten IP-Adressen gefüllt (Z. 42-45). Enthält diese Liste noch nicht die Adresse des aktuellen Besuchers, wird diese Zeile ebenfalls hinzugefügt (Z. 48-51).
Zum Schluss erfolgt das Auslesen des bisherigen Zählerstandes (Z. 55-56) und für den Fall eines “neuen” Besuchers wird der Zählerstand um Eins erhöht (Z. 58-63).
Nun enthält die Variable $Counter den aktuellen Zählerstand, den Sie an einer beliebigen Stelle auf Ihrer Webseite ausgeben können.