Besucherzähler mit PHP und MySQL Zurück zur Übersicht
Über den Autor
Ich möchte euch hier zeigen, wie man mit wenig Code einen funktionieren Counter mit Datenbank und "reload-Sperre" bastelt.
1. Datenbank-Tabelle erstellen
Zuerst wird eine Datenbank-Tabelle benötigt, nehmt dazu folgenden Code und führt diesen in phpMyAdmin aus:
Code:
CREATE TABLE `counter` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT , `ip` VARCHAR( 15 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL , `zeitstempel` INT UNSIGNED NOT NULL , UNIQUE ( `ip` ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci
Der ganze Trick, der uns einige Codezeilen erspart ist folgender:
Code:
UNIQUE ( `ip`
Setzt man nun ip auf Unique, kann dieselbe IP nur genau einmal eingtragen werden. D.h. wir müssen nicht explizit prüfen, ob eine IP schon vorhanden ist, das erledigt SQL für uns.
Kommen wir nun zum PHP Teil.
2. PHP Script
2.1 Datei zum Besucherzählen
Zuerst erstellt ihr eine Datei, die die Besucher in die Datenbank aufnimmt, beispielsweise count.php.
Zuerst bauen wir eine Datenbankverbindung auf. (Mehr dazu findet ihr im Tutorial Einstieg in MySQL
PHP-Code:
$db_name = 'foobar'; // Datenbank Name $db_host = 'localhost'; // Datenbank Adresse $db_user = 'root'; // Datenbank Benutzer $db_pass = 'ein_passwort'; // Datenbank Passwort { } { }
Als nächstes wird versucht, die Ip des Besuchers in die Datenbank zu schreiben, wie oben bereits erwähnt müssen wir nichts weiter im Script tun, wenn eine Ip schon in der Datenbank steht, passiert einfach nichts weiter.
Das @ vor mysql_query schützt uns vor nervigen Fehlermeldungen.
PHP-Code:
$sqlQuery = ' INSERT INTO `counter` ( `ip`, `zeitstempel` VALUES ( "' .$_SERVER['REMOTE_ADDR']. '", ';
Das wars auch schon.
2.2 Datei um Zählerstand auszugeben
Als nächstes folgt die Datei, die den aktuellen Zählerstand aufbereitet, erstellt beispielweise die Datei counter.php.
Hier stellen wir genau wie oben zuerst eine Datenbankverbindung her:
PHP-Code:
$db_name = 'foobar'; // Datenbank Name $db_host = 'localhost'; // Datenbank Adresse $db_user = 'root'; // Datenbank Benutzer $db_pass = 'ein_passwort'; // Datenbank Passwort { } { }
Jetzt zählen wir einfach alle Einträge, die es gibt:
PHP-Code:
$sqlQuery = ' SELECT COUNT( `ip` FROM `counter`'; $counter = $sqlCount[0];
Wenn ihr eine Textausgabe wollt, könnt ihr den nächsten Schritt überspringen.
Für eine grafische Ausgabe des Counters erstellt ihr euch 10 kleine Grafiken, die mit den Ziffern 0-9 beschriftet sind und auch so benannt sind. Also 0.gif, 1.gif, 2.gif usw.
Fügt dem Script dann noch diesen Teil hinzu und ändert eventuell noch den Pfad zum Bild sowie die Endung:
PHP-Code:
$imageCount = ''; for( $i = 0; $i < $chars; ++$i { $imageCount .= '<img src="pfad/zum/bild/' .$counter[$i]. '.gif" alt="' .$counter[$i]. '" />'; }
Hier wird zunächst die Anzahl der Zeichen gezählt. Dann wird eine Schleife sooft durchlaufen, wie es Zeichen gibt. Und jedes Zeichen (das jeweils einer Stelle aus dem aktuellen Zählerstand entspricht) wird durch eine Grafik ersetzt.
Damit wäre auch das erledigt, nun zeige ich euch noch wie ihr das ganze in eure Webseite einbindet.
In alle Dateien, die gezählt werden sollen, schreibt ihr folgendes:
PHP-Code:
include_once( 'count.php' ;
Den Dateinamen samt Pfad müsste ihr eventuell noch anpassen.
An der Stelle, an der ihr euren Zählerstand Ausgeben möchtet, schreibt ihr folgendes:
PHP-Code:
include_once( 'counter.php' ; echo 'Es haben sich schon '.$counter.' Besucher hierher verirrt.'; // Text-Version echo 'Es haben sich schon '.$imageCount.' Besucher hierher verirrt.'; // Grafik-Version
Das wars. Ich hoffe ihr könnt etwas damit anfangen
Hier findet ihr nochmal alles in einem Archiv zusammengefasst.