PHP: Ein Besucherzähler (Counter)

Immer wieder gern gesehen auf Webseiten ist ein Besucherzähler.

Variante 1: Counter als Textdatei

Die Besucherzahl wird in einer einfachen Textdatei gespeichert, welche automatisch angelegt wird. Beim Seitenaufruf wird die bisherige Zahl ausgelesen, um 1 erhöht und in einer Variablen $aufruf gespeichert. Dann wird der erhöhte Wert in der Datei count.txt gespeichert.

Unser Counter enthält eine frei definierbare Reloadsperre von 15 Minuten. Während dieser Zeit wird ein erneuter Aufruf vom selben Benutzer nicht als Zugriff gezählt (60*15 = Zeit in Sekunden).

Es reicht aus, auf jeder Seite, auf der der Counter erscheinen soll, an den Anfang des Dokumentes (wirklich ganz an den Anfang, ab Zeile 1, noch vor DOCTYPE und HEAD) folgendes zu notieren:

<?php
//Counter
if(!file_exists("count.txt"))
  {
    $counter = fopen("count.txt", "w");	
    $aufruf = 0;
    fputs($counter, 0);	
  }
else
  {
    $counter = fopen("count.txt", "r+");
    $aufruf = fgets($counter, 100);
  }
if(!$_COOKIE["mycounter"] OR $_COOKIE["mycounter"]<time()-60*15) // 15 Min Reloadsperre
  {
    setcookie("mycounter", time());
    $aufruf = $aufruf+1;
    rewind($counter);
    fputs($counter, $aufruf);
  }
fclose($counter);
?>

Der Aufruf erfolgt dann irgendwo auf der Seite innerhalb eines normalen Absatzes mit...

<p>Sie sind Besucher Nr. <?php echo $aufruf; ?>.</p>

... und sieht aus wie gewöhnlicher Text.

Beim Erstaufruf erscheint eine Null und diese bleibt auch 15 Minuten auf Null!

Die Datei muss nun mit der Endung .php gespeichert werden. PHP-Dateien können nicht ohne weiteres lokal im Browser getestet werden. Laden Sie also die Datei zuerst auf Ihren Server. Dieser muss natürlich PHP unterstützen!

Variante 2: Datenbanklösung

Die Besucherzahl in einer Datenbank zu speichern hat keine besonderen Vorteile, auch wenn es sich natürlich cooler anhört. Datenbanken haben für Laien etwas Mystisches. Es ist aber alles halb so schlimm.

Ein Vorteil, im Sinne von Übersichtlichkeit, entsteht erst, wenn mehrere Counter verwaltet werden sollen, da der Zugriff auf die einzelnen Werte dann leichter wird, oder falls statistische Auswertungen hinzukommen.

Der Nachteil ist natürlich, dass erst einmal der Zugriff auf eine Datenbank möglich sein muss. Sie müssen sich also zumindest ein wenig damit auskennen.

Ein Script für so einen datenbankbasierten Counter werden ich hier in Kürze vorstellen. Wenn ich mal wieder Langeweile hatte...