# [Anleitung] Eigenes Foren-Statistik-Panel mit kugelsicherem Besucherzähler erstellen
Hallo zusammen,
wer seiner Community eine übersichtliche Statistik spendieren möchte, stößt mit den Standard-Mitteln von PHP-Fusion oft an Grenzen. In dieser Anleitung zeige ich euch, wie ihr ein eigenes, performantes Seiten-Panel einrichtet.
Das Highlight: Ein **kugelsicherer Besucherzähler**, der über eine Cookie-Sperre echte tägliche Besucher zählt (statt bloße Seitenaufrufe) und die Daten in einer eigenen Datenbank-Tabelle speichert. Zusätzlich werden die Gesamt-Themen und Beiträge aus dem Forum live ausgelesen.
Hier ist der schrittweise Weg und der fertige PHP-Code für euer Panel.
---
### Schritt 1: Das neue Panel im Admin-Bereich anlegen
1. Loggt euch in eure PHP-Fusion Administration ein.
2. Navigiert zu **System-Einstellungen** ➡️ **Panel-Administration** (bzw. *Seiten-Panels*).
3. Klickt auf **Neues Panel erstellen**.
4. Vergebt einen Namen, zum Beispiel: Foren-Statistiken.
5. Stellt den Panel-Typ zwingend auf **PHP** (nicht auf HTML oder Text).
6. Wählt die gewünschte Position (z. B. Links oder Rechts) und schaltet das Panel auf **Sichtbar**.
---
### Schritt 2: Der PHP-Code für das Panel
Kopiert den folgenden PHP-Code eins zu eins in das große Textfeld eures neuen Panels. Das Skript prüft beim ersten Aufruf automatisch, ob die benötigte Statistik-Tabelle existiert, und legt sie falls nötig selbstständig an.
**Wichtiger Hinweis vor dem Kopieren:**
Fügt den Code im Panel-Editor ganz normal ein. Achtet darauf, dass vor dem openside und nach dem closeside keine ungewollten Leerzeichen stehen.
---
php
**START DES PHP-CODES:**
openside("Foren-Statistiken");
echo "<div class='stats-panel' style='line-height: 1.6;'>";
// BESUCHERZÄHLER MIT KUGELSICHERER COOKIE-SPERRE
$table_stats = DB_PREFIX."site_visitor_stats";
$check_table = dbquery("SHOW TABLES LIKE '".$table_stats."'");
if (dbrows($check_table) == 0) {
dbquery("CREATE TABLE ".$table_stats." (
stat_date DATE NOT NULL,
stat_count INT(11) NOT NULL DEFAULT 0,
PRIMARY KEY (stat_date)
)");
dbquery("INSERT INTO ".$table_stats." (stat_date, stat_count) VALUES (CURDATE(), 1)");
}
$cookie_name = "dempires_visited_today";
if (!isset($_COOKIE[$cookie_name])) {
dbquery("INSERT INTO ".$table_stats." (stat_date, stat_count) VALUES (CURDATE(), 1) ON DUPLICATE KEY UPDATE stat_count=stat_count+1");
$seconds_to_midnight = strtotime('tomorrow') - time();
setcookie($cookie_name, "yes", time() + $seconds_to_midnight, "/");
}
$get_today = dbarray(dbquery("SELECT stat_count FROM ".$table_stats." WHERE stat_date = CURDATE()"));
$v_today = !empty($get_today) ? $get_today['stat_count'] : 1;
$get_yesterday = dbarray(dbquery("SELECT stat_count FROM ".$table_stats." WHERE stat_date = DATE_SUB(CURDATE(), INTERVAL 1 DAY)"));
$v_yesterday = !empty($get_yesterday) ? $get_yesterday['stat_count'] : 0;
$get_record = dbarray(dbquery("SELECT stat_count, stat_date FROM ".$table_stats." ORDER BY stat_count DESC LIMIT 1"));
$v_record = !empty($get_record) ? $get_record['stat_count'] : 1;
$v_record_date = !empty($get_record) ? date('d.m.Y', strtotime($get_record['stat_date'])) : date('d.m.Y');
$get_total = dbarray(dbquery("SELECT SUM(stat_count) as total FROM ".$table_stats));
$v_total = !empty($get_total) ? $get_total['total'] : 1;
// AUSGABE: BESUCHER-ZÄHLER (Mit Icons und farbigen Zahlen)
echo "<div class='stat-group'>";
echo "<strong style='color: #158CBA;'><i class='fa fa-line-chart'></i> Besucher-Zähler</strong><br />";
echo "Besucher heute: <strong style='color: #28B62C;'>".$v_today."</strong><br />";
echo "Besucher gestern: <strong style='color: #7c7c7c;'>".$v_yesterday."</strong><br />";
echo "Rekord: <strong style='color: #FF851B;'>".$v_record."</strong> <span class='small text-muted'>(".$v_record_date.")</span><br />";
echo "Besucher gesamt: <strong style='color: #158CBA;'>".$v_total."</strong><br />";
echo "</div><hr style='margin-top: 10px; margin-bottom: 10px;' />";
// CONTENT STATISTIKEN
$table_threads = DB_PREFIX."forum_threads";
$table_posts = DB_PREFIX."forum_posts";
$stats_threads = dbcount("(thread_id)", $table_threads);
$stats_posts = dbcount("(post_id)", $table_posts);
// AUSGABE: GESAMT-STATISTIKEN (Mit Icons und farbigen Zahlen)
echo "<div class='stat-group'>";
echo "<strong style='color: #158CBA;'><i class='fa fa-database'></i> Gesamt-Statistiken</strong><br />";
echo "Themen gesamt: <strong style='color: #555555;'>".$stats_threads."</strong><br />";
echo "Beiträge gesamt: <strong style='color: #555555;'>".$stats_posts."</strong><br />";
echo "</div>";
echo "</div>";
closeside();
**ENDE DES PHP-CODES**
---
### Schritt 3: Erklärung der Funktionsweise
* **Cookie-Sperre ($seconds_to_midnight):** Sobald ein neuer Besucher die Seite betritt, wird ein Cookie gesetzt, das exakt um 00:00 Uhr Mitternacht abläuft. Dadurch wird der Zähler pro Nutzer und Tag nur einmal hochgezählt – egal, wie viele Unterseiten er anklickt.
* **Datenbank-Tabelle (_site_visitor_stats):** Die Daten werden tageweise gespeichert. Dadurch lässt sich im Code über DATE_SUB der Wert für Gestern ermitteln sowie über MAX(stat_count) der absolute Allzeit-Rekord eurer Webseite auslesen.
* **Live-Foren-Zähler (dbcount):** Das Skript greift direkt auf die Tabellen _forum_threads und _forum_posts zu, sodass die Zahlen im Seiten-Panel in exakt derselben Sekunde steigen, in der ein User einen neuen Beitrag im Forum veröffentlicht.
Klickt nach dem Einfügen des Codes im Admin-Bereich einfach auf Panel speichern. Das Statistik-Panel ist ab sofort aktiv und einsatzbereit!