Diese Seite bietet einen Überblick über die Kernkomponenten und PHP-Skripte, die hinter der Website gemeindeinfos.de stehen, um Interessenten einen Einblick in die Struktur und die Aufgaben der einzelnen Bausteine zu geben.
gemeindeinfos.de Daten zu 10.953 deutschen Gemeinden. Diese Daten stammen vom statistischen Bundesamt in der aktuellsten Fassung von 08/2025.gemeindeinfos.de-Datenbank gespeichert, jeweils mit passenden Wikipedia-Bildern (und den dazugehörigen Lizenzhinweisen). Auch hier wieder strukturierte Daten. Separate Seiten zu weiteren 100 Reisegebieten sind möglich.gemeindeinfos.de ist KEIN WordPress: Sämtliche Funktionen werden auf gemeindeinfos.de von lediglich 15 PHP-Dateien ausgeführt (Eine Standard WordPress-Installation besteht aus vier bis fünf TAUSEND Dateien). Entsprechend gestaltet sich die Wartung von gemeindeinfos.de, um ein Vielfaches einfacher, als es bei Nutzung eines Content-Management-Systems der Fall wäre./index.phpfilter_builder.phpexport_csv.phpgemeinde.php generate_image.phpautocomplete.phpreisegebiete.phpnavi.php footer.phpstyle.css/index.phpDie Datei /index.php ist das Frontend-Kontrollzentrum und der Single-Entry-Point für die Hauptfunktionalität der Website: das Filtern, Sortieren und Anzeigen der Gemeindedaten. Sie kombiniert PHP-Logik für die serverseitige Datenverarbeitung und HTML/JavaScript für die Darstellung und Interaktion.
Die Ausführung beginnt mit essentiellen Initialisierungsschritten und Sicherheitsmechanismen:
require_once 'db_config.php';: Stellt die Datenbankverbindung über PDO (PHP Data Objects) her und konfiguriert diese. PDO wird für die sichere, parametrisierte Abfrageausführung ($pdo->prepare()) genutzt, um SQL-Injection-Angriffe zu verhindern.require_once 'includes/filter_builder.php';: Ein externes Skript (filter_builder.php) ist für die dynamische Erstellung der SQL-WHERE-Klausel auf Basis der übergebenen $_GET-Parameter zuständig.Ein Session-basiertes Rate Limiting wird implementiert, um die Anzahl der Filter-Anfragen pro Benutzer innerhalb eines Zeit-Fensters zu begrenzen und so eine Überlastung des Servers zu vermeiden.
Die Kernaufgabe liegt in der Verarbeitung der Filter:
buildFilterQuery($_GET) aus filter_builder.php konvertiert die URL-Parameter (wie gname, blandkz, ewmin etc.) in eine sichere SQL-WHERE-Klausel und ein Array von Parametern für das Prepared Statement.$items_per_page wird die Anzahl der Seiten berechnet und ein LIMIT/OFFSET-Statement für die Hauptabfrage erstellt.navi.php und footer.php werden inkludiert, um die konsistente Navigation und den Footer auf jeder Seite zu gewährleisten.<a href="..."> Links) die Interaktion ermöglichen.filter_builder.phpDieses PHP-Skript ist eine Bibliothek von Funktionen zur Validierung von Benutzereingaben und zur Erstellung von SQL-Abfragefragmenten:
is_numeric() für numerische Felder) und bereinigt (preg_replace, trim). Die Logik stellt sicher, dass nur erlaubte Zeichen und Wertebereiche in die Abfrage gelangen.WHERE-Klauseln und die dazugehörigen Parameter separat zurück, die dann von der aufrufenden Seite (index.php oder export_csv.php) in ein PDO-Prepared Statement eingebunden werden.export_csv.phpDie Export-Seite ermöglicht es Benutzern, die gefilterten Daten als CSV-Datei herunterzuladen. Sie ist optimiert, um auch große Datensätze effizient zu verarbeiten:
php://output), um eine Überlastung des PHP-Speichers zu verhindern.;) als Trennzeichen verwendet und Dezimalzahlen von Punkt auf Komma umformatiert.gemeinde.phpDieses PHP-Skript dient zur Anzeige von Einzelinformationen einer Gemeinde:
ags (Amtlicher Gemeindeschlüssel) identifiziert werden. Das PHP-Skript gemeinde.php läd basierend auf diesem Wert, die weiteren Daten zum jeweiligen Ort. So kann solch ein Link aussehen: /gemeinde.php?ags=09564000generate_image.php generiert, der Social-Media-Bilder (OG-Image/Twitter-Card) bereitstellt. Diese Bilder werden "on the fly" erzeugt, wenn sie gebraucht werden. Ein Speichern oder Vorhalten dieser Bilder ist nicht nötig. Obwohl diese Bilder nirgends gespeichert sind, werden sie trotzdem beim Teilen in sozialen Medien wie Teams oder WhatsApp angezeigt. Auch Google kann diese Bilder zur Anzeige von Snippets benutzen. Und so sieht solch ein Link zu einem der Bilder aus: /generate_image.php?ags=09564000autocomplete.phpEin schlanker, dedizierter Endpunkt, der für schnelle Suchvorschläge optimiert ist:
reisegebiete.phpDieses Skript ist für die dynamische Generierung der Themenseiten zu den deutschen Reisegebieten verantwortlich. Die Implementierung ist auf saubere Datenextraktion, korrekte Lizenzierung von Inhalten und SEO ausgelegt.
Diese Komponenten gewährleisten die Konsistenz des Erscheinungsbilds und der Navigationsstruktur auf der gesamten Website.
navi.php): Definiert den responsiven Header und die Dropdown-Menüs für Bundesländer und Reisegebiete (Nicht auf der About-Seite).footer.php): Enthält die konsistenten Links zu Impressum, Datenschutz und XML-Sitemaps. Die Konsistenz dieser wichtigen Links und der Aktualitätsinformationen wird so gewährleistet.#1F1F1F), hellen Textfarben (#E0E0E0) und einer blauen Akzentfarbe (#64B5F6)..site-header) ist mit position: fixed oben am Bildschirm fixiert. Der padding-top des <body>-Elements stellt sicher, dass der Seiteninhalt nicht unter die fixe Navigation rutscht.@media (max-width: 968px)) werden spezifische Anpassungen für mobile Geräte vorgenommen, insbesondere die Navigation und das Layout des Hauptcontainers.@media print-Block stellt sicher, dass beim Ausdrucken der Seite alle nicht-relevanten Elemente ausgeblendet und der Hintergrund auf Weiß gesetzt wird.
Sind noch Fragen offen oder haben Sie Interesse an einer Zusammenarbeit? Schreiben Sie mir gerne.