Ein (wirklich) einfacher Counter

Obwohl ich selber kein Freund offensichtlicher Counter bin, kann es für den Einen oder Anderen doch ein interessantes Gimmick auf der eigenen Website sein: Der Besucherzähler.

Im folgenden Artikel werde ich einen kleinen, einfachen Counter vorstellen, der ohne Datenbank auskommt und mit ein paar Zeilen PHP schnell selbst geschrieben ist.
Der Counter speichert den Zählerstand in einer einfachen Textdatei auf dem Server und sollte somit in den meisten Serverumgebungen funktionieren. Zudem legt dieser Counter einen Cookie auf dem Rechner des Besuchers ab und verhindert so, dass ein und derselbe Besucher (binnen einer Stunde) mehrfach gezählt wird.

Schritt 1: Besucher zählen

Der folgende Code-Schnipsel prüft zunächst, ob auf dem Client der Cookie mit der hinterlegten IP-Adresse existiert.

  • Existiert der Cookie nicht, so wird er angelegt – wobei die aktuelle IP-Adresse des Besuchers im Cookie gespeichert und die Gültigkeitsdauer des Cookie auf eine Stunde festgesetzt wird.
    Anschliessend wird der Zählerstand um eins erhöht
  • Ist der Cookie bereits vorhanden, wird die dort gesicherte IP-Adresse mit der aktuellen verglichen und NUR dann der Zählerstand erhöht, wenn diese voneinander abweichen
//IP-Adresse aus Cookie lesen (wenn vorhanden)
$user_ip = $_COOKIE["user_ip"]; 
//Dateiname der Zaehlerdatei festlegen
$counterfile = "counter.txt"; 
//Zaehlerdatei auslesen und Inhalte in $filehandle speichern
$filehandle = file($counterfile); 

//RELOADSPERRE - Nutzer nicht doppelt zaehlen
//Wenn $user_ip leer ist (Nutzer bisher nicht erfasst)...
//...dann...
if(!$user_ip) 
    { 
    //Cookie erzeugen, welcher die aktuelle IP-Adresse und
    //die Ablaufzeit enthaelt: 360000 Millisekunden = 1 Stunde 
    setcookie("user_ip", $_SERVER['REMOTE_ADDR'], time()+360000); 
    //Inhalt der Zaehlerdatei (eine Zahl) um eins erhoehen
    $filehandle[0]++; 
    //Datei oeffnen, schreiben, schliessen
    $cf = fopen($counterfile, "w+"); 
    fputs($cf, "$filehandle[0]"); 
    fclose($cf); 
    } 
//...sonst...($user_ip nicht leer, aber IP-Adresse weicht ab)
elseif($user_ip != $_SERVER['REMOTE_ADDR']) 
    { 
    //Inhalt der Zaehlerdatei (eine Zahl) um eins erhoehen
    $filehandle[0]++; 
    //Datei oeffnen, schreiben, schliessen
    $cf = fopen($counterfile, "w+"); 
    fputs($cf, "$filehandle[0]"); 
    fclose($cf); 
    }

Damit wäre der erste Schritt erledigt: Der Besucher wurde gezählt (wenn er die Bedingungen erfüllt hat) und der aktuelle Zählerstand in der Zählerdatei „counter.txt“ gespeichert.

Schritt 2: Zählerstand ausgeben

Nun muss nur noch an der gewünschten Stelle innerhalb der Website der Zählerstand ausgegeben werden. Das Auslesen UND Ausgeben der Zählerdatei übernimmt folgende kurze Code-Zeile:

<?php
readfile("counter.txt");
?>

Alternativ lässt sich die Zahl auch mit einer festen Anzahl an Stellen ausgeben, was aus Gründen des Layouts oft sinnvoller ist. Hierfür steht in PHP die Funktion „printf()“ zur Verfügung. Statt „3“ lässt sich so auf einfache Weise „003“ ausgeben.

<?php
$filehandle=file("counter.txt");
//printf() gibt formatierten String aus - %0Xd - X=Anzahl der Stellen
printf("%03d",$filehandle);
?>

Fazit

Auf diese Weise lässt sich recht schnell ein einfacher Counter realisieren. Jedoch sollte die damit ermittelte Besucherzahl mit äußerster Vorsicht genossen werden, da das mehrfache Zählen eines Benutzers nicht vollständig ausgeschlossen werden kann und das Ergebnis manipulierbar ist.

Eine erheblich bessere Analyse des Besucheraufkommens bietet ein regelmäßiger Blick in die Logfiles oder in die Analysetools der Webhoster. Dort findet man oft grafisch aufbereitete Daten, welche schneller und besser Rückschlüsse auf die Besucher zulassen.

Fehler gefunden oder Verbesserungsvorschläge? Bitte die Kommentarfunktion benutzen!

 

1 Kommentar Schreibe einen Kommentar

Schreibe einen Kommentar