Nun ja, es ist natürlich gewachsener Code. Meine PHP-Kenntnisse sind auch mehr als bescheiden. Da muss das so aussehen
Die Abhängigkeiten sind nicht so stark wie es auf den ersten Blick wirkt und außerdem eher baumartig. Die globalen Variablen sind (fast alle) in einer Datei konzentriert.
Wurzel ist die Konfig-Datei globalVars.php, darüber die Datei mit den gängigen Hilfsfunktionen, helper.php.
Die nächste Ebene ist dann alles im contentmanager-Verzeichnis, welches die Schnittstellen von Oberfläche und Datenbank-Inhalten darstellt. Ganz oben sind die Seiten für die Html-Ausgabe. Die rufen fast nur Funktionen auf, die den HTML-Code irgendwelcher Listen, wie z.B. die Liste alle Spiele, zurückgeben.
Ok, die Lokalisierung ist ein Fremdkörper. Vor allem mit der Verwendung zweier globaler Variablen, was absolut nicht notwendig wäre (D.h. das globale Wörterbuch $lang kann in die Klasse verschoben werden.)
Die Datenbankabstraktion besteht aus simplen Hilfsfunktionen, um ein Handle-Objekt zu erzeugen und der Generierung einiger SQL-Statements. Das ist meiner Meinung sogar zu wenig(!) gekapselt, weil nicht alle Methoden, welche die SQL-Statements erzeugen nicht an einem Ort gebündelt sind.
Benutzerdaten werden jedenfalls durch Formatierungs-Methoden geleitet und dann mit Prepared Statements verarbeitet. Kann sein, dass noch ein, zwei SQL-Befehle ohne Prepared Statements herum schwirren.
Wenn du oder ein anderer der Meinung ist, dass der Code wegen Sicherheitsbedenken nicht akzeptabel ist, würde ich vorschlagen komplett neu zu beginnen. Ich wollte hier die Codebasis möglichst übersichtlich halten und da kann man sich nicht gegen alle Angriffsvektoren absichern.
Z.B. ist ein Fluten mit Datenbankeinträgen problemlos möglich. Da ich keine IP's tracken will und das Senden von Registrierungs-Mails rechtlich bedenklich ist, baue ich da auch keinen Schutz ein.