Eine einfache Counter Klasse in PHP / MySQL (PIMs und Visits)

Der hier vorgestellte Counter kann im einfachsten Falle mit zwei PHP-Zeilen in eine Seite integriert werden. Zur Speicherung des Counter-Zustandes wird eine MySQL Datenbank benötigt. Die Ausgabe der Counter-Daten kann optional auf jeder Seite erfolgen oder nur auf bestimmten Seiten – beispielsweise im Administrationsbereich – angezeigt werden. Counterdaten werden grundsätzlich als Texte geliefert und können so überall eingebaut werden. Damit ist es möglich den Counter beliebig auf der Seite zu platzieren und zu formatieren. Standardmäßig sind Visits nach einem Timeout von 30 Minuten (d.h. von der entsprechenden IP-Adresse wurde 30 Minuten keine Seite angefordert) abgeschlossen und es wird beim nächsten Page-Request unter der selben IP-Adresse ein neuer Visit gezählt. Zusätzlich wird eine Benutzersperre auf Basis von Cookies verwendet. Diese Sperre lässt sich individuell für jeden Benutzer ein- bzw. ausschalten. Mit dieser Benutzersperre werden „Interne Benutzer” nicht als Besucher gezählt und auch die durch diese Benutzer angefallenen Page-Impressions (Page-Hits) werden vom Counter ignoriert. Somit kann der Anwender selbst entscheiden, ob er selbst getätigte Seitenaufrufe zählen möchte oder nicht.

Features in Kurzform:

Installation / Konfiguration

Eine Installation des Counters beschränkt sich darauf, dass die Counter Klasse und evtl. die Administrationsseite auf den Webserver kopiert werden muss. Am besten kopiert man die Klasse (Datei SimpleCounter.php) in ein spezielles Verzeichnis – beispielsweise /counter – und passt beim Einbinden die Zeile, in der die Klasse eingebunden wird (require_once) an. Bei der Initialisierung des Counters wird automatisch geprüft, ob die nötigen Datenbanktabellen vorhanden sind. Ist dies nicht der Fall, so werden die benötigten Tabellen automatisch in der MySQL Datenbank erzeugt. Die Administrationsseite sollte durch eine Zugriffskontrolle – beispielsweise durch Vergabe eines Passworts mit Hilfe einer .htaccess-Datei – geschützt werden. Dies soll die Änderung der Counter-Konfiguration durch unberechtigte verhindern.

Nutzungsbeispiel für den Homepage Counter

Sie können die Counter-Klasse mit Hilfe von zwei PHP-Anweisungen in Ihre Seite integrieren. In dieser Form wird der Counter nicht angezeigt, sondern nur aktualisiert. Eingebunden wird der Counter durch folgende Code-Zeilen:

<?php
    // include the counter class
    require_once ('/counter/SimpleCounter.php');
    // create counter instance with standard session timeout
    $counter = new SimpleCounter ("localhost", "counterdb", "test", "test");
?>

Bei dem Beispiel wird davon ausgegangen, dass die Counter Klasse im Verzeichnis /counter liegt. Die Parameter des Konstruktors sind: Der Name des Datenbankservers (Name des Rechners, auf dem die Datenbank läuft; im oberen Beispiel localhost), der Name der MySQL-Datenbank, die verwendet werden soll, der Benutzername des Datenbank-Benutzers (erstes test) und das Passwort dieses Benutzers (zweites test im Beispiel). Diese Daten finden Sie im Verwaltungsbereich Ihres Internetauftritts oder Ihr Hosting-Provider teilt Ihnen diese Daten schriftlich mit. Optional kann noch ein weiterer Parameter angegeben werden der besagt, nach wievielen Sekunden ein Visit-Timeout erfolgen soll. Im vorliegenden Fall wird der Standard-Wert (30 Minuten) gesetzt.

Achtung:
Der Counter muss auf diese Weise (mit den beiden Script-Zeilen aus dem obigen Beispiel) auf jeder einzelnen Seite eingebunden sein, damit auch alle Besucher gezählt werden.

Für den Fall, dass die Counter-Daten auf der jeweiligen Seite angezeigt werden sollen sind einige zusätzliche Code-Zeilen nötig. Im folgenden Beispiel werden die dazu notwendigen Zeilen aufgeführt. Ich denke, dass zu diesem Beispiel nichts weiter anzumerken ist und sich der Code von selbst erklärt.

<?php
    // include the counter class
    require_once ('/counter/SimpleCounter.php');
    // create counter instance with standard session timeout
    $counter = new SimpleCounter ("localhost", "counterdb", "test", "test");
    // print counter state
    print "Users online: " . $counter->getUsersOnlineCount () . "<br>";
    print "Visits today: " . $counter->getTodaysVisitCount () . "<br>";
    print "Hits today: " . $counter->getTodaysHitCount () . "<br>";
    print "Counting since: " . $counter->getCounterStartDate () . "<br>";
    print "Visits total: " . $counter->getTotalVisitCount () . "<br>";
    print "Hits total: " . $counter->getTotalHitCount () . "<br>";
?>

Demonstration des Besucherzähler Skripts

In der PHP Counter Script Demo können Sie sich das Beispiel eines Besucherzählers anschauen. Der dort angezeigte Beispiel-Counter kann auf einer Konfigurationsseite auch bliebig konfiguriert werden.

Download

Das Nutzungsbeispiel, die Administrationsseite sowie die Counter Klasse finden Sie im Zip-Archiv. Außerdem ist eine Beispielseite im Archiv enthalten, welche den Counter-Status ausgibt. Hier können Sie die PHP Counter Klasse Downloaden (4.1K). Sollten Sie Fragen oder Probleme haben, so können Sie mir gerne über den Kontaktbereich eine E-Mail schicken.

Wenn Ihnen das hier angebotene Script gefällt und Sie es auf Ihrer Homepage einsetzen möchten würde ich mich freuen, wenn Sie einen Link auf meine Seite setzen.

Letzte Posts zum Thema aus unserem Forum

counter auch ohne datenbank?

tach auch, ich habe nach einem besucherzähler gesucht, der auf meiner seite anzeigt, wieviele besucher sich dort aufhalten. allerdings habe ich ... » mehr

von marcel am Montag, 8. Dezember 2008 12:21 in PHP - bisher 1 Antwort
Letzter Beitrag: Montag, 8. Dezember 2008 13:34 von alm

Hallo, sicher kann die Counter-Klasse so umgeschrieben werden, dass sie auch ohne Datenbankanbindung funktioniert. Allerdings würde das einer neuen ... » mehr

Counter mit link am ende geht nicht

Hi @ All Habe nun endlich einen counter hinbekommen ... » mehr

von dw-sonic am Donnerstag, 24. September 2009 21:43 in JavaScript - bisher 8 Antworten
Letzter Beitrag: Montag, 28. September 2009 14:10 von dw-sonic

Habe den fehler gefunden xd es rennt nun richtig. <div id="bild" style="display:none;"><img border="0" ... » mehr