Be­su­cher­zäh­ler halten fest, wie oft eine Website auf­ge­ru­fen wird, und prä­sen­tie­ren die Be­su­cher­zahl für ge­wöhn­lich am unteren Rand der Start­sei­te. Während die visuelle Ausgabe der Nut­zer­da­ten meist nur einen re­prä­sen­ta­ti­ven Zweck hat, verwenden viele Betreiber die er­mit­tel­ten Be­su­cher­zah­len auch für Web­ana­ly­sen. Hierfür greifen die meisten auf die in­te­grier­ten Web­coun­ter-Mög­lich­kei­ten von Content-Ma­nage­ment-Systemen oder Homepage-Baukästen zurück oder erwerben einen Zähler bei einem der diversen Online-Anbieter. Diese Lösungen nutzen häufig die von der Logfile-Analyse bekannten Zähl­pi­xeln oder ähnliche Ja­va­Script-An­wen­dun­gen, die zu­sätz­lich zur bloßen Zahl der Besucher auch spe­zi­fi­sche In­for­ma­tio­nen zu den einzelnen Nutzern auf­zeich­nen.

Damit Sie nicht von einem externen Dienst­leis­ter abhängig und auch in Sachen Da­ten­schutz auf der sicheren Seite sind, können Sie al­ter­na­tiv auch einen eigenen Be­su­cher­zäh­ler erstellen und auf dem eigenen Webspace laufen lassen. Sie benötigen dazu lediglich eine Datenbank bzw. Textdatei sowie grund­le­gen­des PHP-Know-how.

KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on

Wie funk­tio­nie­ren her­un­ter­lad­ba­re Web­coun­ter-Lösungen?

Der ein­fachs­te Weg, einen Counter auf Ihrer Website zu im­ple­men­tie­ren, ist zwei­fels­oh­ne der Download eines fertigen Skripts. Kos­ten­pflich­ti­ge und kos­ten­lo­se Be­su­cher­zäh­ler un­ter­schei­den sich dabei in erster Linie durch ihren Leis­tungs­um­fang. Wenn Sie sich nämlich für ein zah­lungs­pflich­ti­ges Angebot ent­schei­den, erhalten Sie in der Regel auch visuell auf­be­rei­te­te Sta­tis­ti­ken mit In­for­ma­tio­nen, die weit über die Angabe des bloßen Traffics hin­aus­ge­hen. Wie de­tail­liert diese Auskünfte sind, hängt davon ab, ob die Auf­zeich­nung der Be­su­cher­ak­ti­vi­tä­ten aus­schließ­lich auf Seiten des Servers oder zu­sätz­lich auch cli­ent­sei­tig statt­fin­det. In beiden Fällen werden aber stan­dard­mä­ßig folgende Grund­pa­ra­me­ter erfasst:

  • Zeitpunkt des Zugriffs
  • IP-Adresse des Besuchers
  • Client des Besuchers
  • Quell-URL

Je nach Kon­fi­gu­ra­ti­on kann der Server jedem einzelnen Besucher bei seinem ersten Zugriff eine ein­deu­ti­ge Kennung (Session-Cookie) zuweisen. So lässt sich in der Be­su­cher­zäh­ler-Statistik be­rück­sich­ti­gen, ob es sich um den ersten Sei­ten­auf­ruf eines Nutzers handelt oder ob dieser bereits mehrere Seiten auf­ge­ru­fen hat. Mithilfe von cli­ent­sei­ti­gem Ja­va­Script oder Adobe Flash kann man den In­for­ma­ti­ons­ge­winn noch zu­sätz­lich steigern. Tracking verrät bei­spiels­wei­se, welches Be­triebs­sys­tem und welche Browser-Er­wei­te­run­gen der Besucher verwendet hat oder welche Bild­schirm­auf­lö­sung ein­ge­stellt ist. Letzt­ge­nann­te In­for­ma­ti­on kann bei­spiels­wei­se bei der Website-Op­ti­mie­rung für Mo­bil­ge­rä­te eine ent­schei­den­de Rolle spielen.

Bei den meisten Anbietern können Sie sich zwischen ver­schie­de­nen Designs und Größen für den später an­ge­zeig­ten Be­su­cher­zäh­ler ent­schei­den. Sie wählen eines der ver­füg­ba­ren Designs und die ge­wünsch­te Größe aus und ge­ne­rie­ren über ent­spre­chen­den Tool mit einem Click den HTML-Code. Dieses Snippet binden Sie an­schlie­ßend einfach an ge­wünsch­ter Stelle in Ihre Webseiten ein, um das Besucher-Tracking zu ak­ti­vie­ren.

Be­su­cher­zäh­ler selbst erstellen – eine Anleitung

Wenn Sie einen eigenen Be­su­cher­zäh­ler für Ihre Homepage erstellen wollen, müssen Sie zunächst die passenden Struk­tu­ren schaffen. Die erfassten Zugriffe müssen bei­spiels­wei­se zunächst einmal ge­spei­chert werden. Nur so kann der Web­coun­ter später auch den aktuellen Stand anzeigen und aus­sa­ge­kräf­ti­ge Sta­tis­ti­ken liefern. Für kleinere Websites reicht hierfür eine einfache Textdatei, die Sie auf Ihrem Server ablegen und in dem Skript als Spei­cher­ort angeben. Je größer Ihr Web­pro­jekt und der durch­schnitt­li­che Traffic jedoch sind, desto eher sollten Sie für die Spei­che­rung der In­for­ma­tio­nen auf eine Datenbank wie MySQL zu­rück­grei­fen. Bevor wir auf das ei­gent­li­che Skript eingehen, behandelt der nächste Abschnitt die ent­spre­chen­de Kon­fi­gu­ra­ti­on der Datenbank.

MySQL-Datenbank für Web­coun­ter kon­fi­gu­rie­ren

Die Ver­knüp­fung mit einer Datenbank ist grund­sätz­lich mit mehr Anfragen verbunden und aus diesem Grund auch komplexer als der Abruf der In­for­ma­tio­nen aus einer einfachen Textdatei. Über­prü­fen Sie also im Vorhinein genau, ob sich der Einsatz von MySQL und Co. für Sie lohnt oder Ihr Projekt eventuell un­nö­ti­ger­wei­se bremst. Je nachdem, welche In­for­ma­tio­nen Sie mit Ihrem eigenen Be­su­cher­zäh­ler erfassen und auswerten möchten, gilt es, eine Tabelle mit einer ent­spre­chen­den Zahl von Feldern anzulegen. Vier Felder bzw. vier In­for­ma­tio­nen sind dabei von be­son­de­rem Interesse.

  • id: An erster Stelle der er­stell­ten Tabelle empfiehlt sich das Feld „id“, das der Über­sicht­lich­keit und der ein­fa­che­ren Hand­ha­bung der Da­ten­sät­ze dient (wenn bei­spiels­wei­se die Einträge sortiert werden sollen). Die Ver­wen­dung dieses Feldes wird empfohlen, ist aber nicht ver­pflich­tend. Damit die Datenbank die späteren Einträge au­to­ma­tisch fort­lau­fend num­me­riert und jede Nummer nur einmal vergeben wird, geben Sie außerdem die Parameter AUTO_INCREMENT und PRIMARY KEY an.
  • access_page: Die Spalte „access_page“ benötigen Sie in jedem Fall. Sie ist für den Titel der je­wei­li­gen Webseite vor­ge­se­hen, in die der Be­su­cher­zäh­ler ein­ge­bun­den wird. Mit den Pa­ra­me­tern NOT NULL und UNIQUE stellen Sie zu­sätz­lich sicher, dass keine doppelten Einträge erzeugt werden. Als Datentyp können Sie für dieses Feld entweder VARCHAR oder TEXT verwenden. Darüber hinaus empfiehlt sich die Angabe der Kollation (Zei­chen­satz) utf8_bin, damit auch Umlaute korrekt gesichert und aus­ge­ge­ben werden.
  • access_counter: Der ei­gent­li­che Be­su­cher­zäh­ler für die HTML-Seiten verbirgt sich hinter dem INTEGER-Feld „access_counter“. Bei jedem Zugriff auf die be­tref­fen­de „access_page“ erhöht sich hier der Wert au­to­ma­tisch um 1.
  • access_date: Der Zeit­stem­pel für den Zugriff auf eine Seite muss zwar nicht unbedingt in der Datenbank ge­spei­chert werden, zählt für ge­wöhn­lich aber zu den ersten Werten, die im Rahmen eines Web­coun­ters gesammelt werden. Mit der Nutzung des Datentyps TIMESTAMP inklusive des Attributs CURRENT_TIMESTAMP erhalten Sie aktuelle Einträge, die sowohl das Datum als auch die exakte Uhrzeit enthalten. Geben Sie zu­sätz­lich die Regel ON UPDATE CURRENT_TIMESTAMP an, trägt die Datenbank den Zeit­stem­pel au­to­ma­tisch selbst ein, ohne dass weitere Pro­gram­mie­run­gen Ih­rer­seits notwendig sind.

Die passende Be­su­cher­zäh­ler-PHP-Funktion erstellen

Die Skript­spra­che PHP eignet sich perfekt dazu, die Be­su­cher­da­ten an die Datenbank wei­ter­zu­lei­ten und die für den Counter be­nö­tig­ten Daten im Anschluss aus­zu­le­sen. Zu diesem Zweck muss das ent­spre­chen­de Skript eine Funktion enthalten, die folgende drei Aufgaben erfüllt:

  1. Sie muss auf die Datenbank verlinken und diese öffnen können.
  2. Sie muss die Tabelle da­hin­ge­hend über­prü­fen, ob ein be­stimm­ter Datensatz bereits existiert, um an­schlie­ßend entweder dessen Zu­griffs­zäh­ler um 1 zu erhöhen oder einen neuen Datensatz mit dem Wert 1 anlegen zu können.
  3. Sie muss den aktuellen Wert des Be­su­cher­zäh­lers zu­rück­ge­ben, damit dieser auf der Homepage ent­spre­chend prä­sen­tiert werden kann.

Da das voll­stän­di­ge Skript recht komplex ist, behandeln die folgenden Absätze die einzelnen Teil­schrit­te der Funktion, die in dieser Anleitung den bei­spiel­haf­ten Namen „besucher“ trägt, zunächst separat.

Der Be­su­cher­zäh­ler-PHP-Code beginnt mit den not­wen­di­gen Pa­ra­me­tern für die In­itia­li­sie­rung der Datenbank – Server und Besitzer der Datenbank, dessen Passwort und Log-in-Namen sowie die korrekte Schreib­wei­se der Tabelle und der an­ge­leg­ten Pflicht­fel­der (wie access_page). Hierbei ist es wichtig, dass Sie die richtigen Daten eintragen, damit später die Ver­bin­dung zur Datenbank aufgebaut werden kann.

<?php
function besucher($record) {
    $db_host = "localhost";
    $db_username = "nutzername"; 
    $db_password = "passwort";
    $db_name = "datenbank-name";
    $db_table = "tabellen-name";
    $counter_page = "access_page";
    $counter_field = "access_counter";

Als nächstes folgt die Anweisung, die Datenbank zu öffnen oder eine Feh­ler­mel­dung aus­zu­ge­ben, wenn der Ver­bin­dungs­auf­bau fehl­schlägt:

$db = mysqli_connect($db_host, $db_username, $db_password, $db_name) or die("Host nicht erreichbar");
$db = mysql_select_db ($db_name, $link) or die("Datenbank nicht erreichbar");

Nach diesen Ein­tra­gun­gen gilt es, das PHP-Skript um die ent­spre­chen­den Zeilen für die Befüllung der Datenbank zu erweitern. Ent­schei­dend ist hierbei das Statement „INSERT…ON DUPLICATE KEY UPDATE“, das in Kom­bi­na­ti­on mit der in­te­grier­ten Erhöhung des Feld­wer­tes um 1 dafür sorgt, dass der Counter wie gewünscht ak­tua­li­siert wird, wenn ein Datensatz bereits existiert:

$sql_call = "INSERT INTO ".$db_table." (".$counter_page.", ".$counter_field.") VALUES ('".$record."', 1) ON DUPLICATE KEY UPDATE ".$counter_field." = ".$counter_field." + 1"; 
mysqli_query($db, $sql_call) or die("Fehler beim Einfügen");

Damit erfüllt die Funktion bereits zwei der drei de­fi­nier­ten Aufgaben: Sie sorgt für den Ver­bin­dungs­auf­bau mit der Datenbank sowie für die an­schlie­ßen­de Er­stel­lung der Da­ten­sät­ze bzw. die Ak­tua­li­sie­rung exis­tie­ren­der Da­ten­sät­ze. Da das Skript aber noch eine dritte Aufgabe zu erfüllen hat und den aktuellen Stand des Be­su­cher­zäh­lers an die Website wei­ter­ge­ben soll, müssen Sie nun noch eine ent­spre­chen­de Da­ten­bank­ab­fra­ge (mysql_query) einfügen und die nu­me­ri­sche Ausgabe des Resultats de­fi­nie­ren (mysql_fetch_assoc). Im letzten Schritt soll die Funktion die Datenbank schließen und das Ergebnis per return zu­rück­ge­ben, weshalb der Schluss­teil der Funktion fol­gen­der­ma­ßen lautet:

$sql_call = "SELECT ".$counter_field. " FROM ".$db_table." WHERE ".$counter_page. " = '".$record. "'";
$sql_result = mysqli_query($db, $sql_call) or die("SQL-Anfrage fehlgeschlagen");
$row = mysqli_fetch_assoc($sql_result);
$x = $row[$counter_field];
mysqli_close($db);
return $x;
    }
?>

So sieht das fertige PHP-Skript aus

Nachdem in den vor­an­ge­gan­ge­nen Ab­schnit­ten die einzelnen Teile der PHP-Funktion erläutert wurden, prä­sen­tie­ren wir Ihnen an dieser Stelle noch einmal das komplette Skript, mit dem Sie einen Be­su­cher­zäh­ler kostenlos auf Ihre Homepage bringen können.

<?php
function besucher($record) {
    $db_host = "localhost";
    $db_username = "nutzername"; 
    $db_password = "passwort";
    $db_name = "datenbank-name";
    $db_table = "tabellen-name";
    $counter_page = "access_page";
    $counter_field = "access_counter";
    $db = mysqli_connect ($db_host, $db_username, $db_password, $db_name) or die("Host oder Datenbank nicht erreichbar");
    $sql_call = "INSERT INTO ".$db_table." (".$counter_page.", ".$counter_field.") VALUES ('".$record."', 1) ON DUPLICATE KEY UPDATE ".$counter_field." = ".$counter_field." + 1"; 
    mysqli_query($db, $sql_call) or die("Fehler beim Einfügen");
$sql_call = "SELECT ".$counter_field. " FROM ".$db_table." WHERE ".$counter_page. " = '".$record. "'";
$sql_result = mysqli_query($db, $sql_call) or die("SQL-Anfrage fehlgeschlagen");
$row = mysqli_fetch_assoc($sql_result);
$x = $row[$counter_field];
mysqli_close($db);
return $x;
    }
?>

In­te­gra­ti­on des Skripts in die HTML-Dokumente

Wollen Sie Ihren eigenen PHP-Be­su­cher­zäh­ler ab­schlie­ßend auf einer Webseite einbinden, müssen Sie nur einige kleinere Än­de­run­gen an dem ent­spre­chen­den HTML-Dokument vornehmen. Die wich­tigs­te Neuerung ist dabei, dass Sie die be­stehen­de Endung .html gegen die Endung .php tauschen. Ferner sollten Sie der PHP-Variablen $page_name im Head-Bereich der Seite einen aus­sa­ge­kräf­ti­gen Sei­ten­na­men zuweisen:

<?php
    $page_name = "Individueller Seitenname";
?>

Mithilfe der PHP-Funktion echo können Sie den aus­ge­wähl­ten Sei­ten­na­men, der später in das access_page-Feld der Datenbank auf­ge­nom­men wird, außerdem zum Sei­ten­ti­tel machen:

<title><?php echo $page_name; ?></title>

Für die Ein­bin­dung des Be­su­cher­zäh­ler-Skripts – hier bei­spiel­haft web­coun­ter.php genannt – setzen Sie nun an der ge­wünsch­ten Position der Website den PHP-Befehl include ein. Im gleichen Schritt geben Sie den Inhalt der Variablen $page_name an die Funktion „besucher()“ weiter:

<?php
include "webcounter.php";
$anzahl_zugriffe = besucher($page_name);
?>

Sobald Sie diesen Code in die Seite ein­ge­bun­den haben, tritt Ihr PHP-Skript in Aktion: Ist der Sei­ten­ti­tel (der Inhalt von $page_name) bisher in der Da­ten­bank­ta­bel­le nicht vorhanden, sorgt es dafür, dass ein ent­spre­chen­der Datensatz angelegt wird. Das Feld access_counter nimmt den Wert 1 an und die Funktion über­mit­telt der Website, dass ein Zugriff statt­ge­fun­den hat. Liegt ein ent­spre­chen­der Eintrag bereits vor, wird der Counter in der Datenbank lediglich um 1 erhöht.

Prä­sen­ta­ti­on der Be­su­cher­zahl auf der Homepage

Nachdem Sie den Be­su­cher­zäh­ler erstellt haben und dieser damit begonnen hat, die Zugriffe Ihrer Besucher auf­zu­zeich­nen, können Sie den aktuellen Zäh­ler­stand auch direkt auf Ihrer Web­prä­senz anzeigen lassen. Der ein­fachs­te Weg dafür ist bei­spiels­wei­se eine Mit­tei­lung, die au­to­ma­tisch im Footer der Seite angezeigt wird. Hierfür benötigen Sie lediglich ein Footer-Element. Per echo-Befehl fügen Sie dem Text den aktuellen Wert der Variablen $anzahl_zugriffe hinzu:

< footer>
    <p>
<?php
        echo "Sie sind bereits der ", $anzahl_zugriffe, ". Besucher auf dieser Seite!";
        ?>
</p>
</footer>
Zum Hauptmenü