Hi Marco,
Ein ernst gemeinter Tipp: Finger weg von diesem Script!! Es ist gemeingefährlich!
Mal ein paar Beispiele aus dem Quellcode:
eval("\$tpl->out(\"".$tpl->get("index")."\");");
eval("\$insert_bit .= \"".$tpl->get("insert_bit")."\";");
Dort wird eval() als Templatesystem (zur Ersetzung der Variablen durch Inhalte) genutzt. Dies birgt insofern Gefahren, als hier fremder Code eingeschleust werden könnte (über das Template, als auch direkt über globale Variablen in eval()) und Fehler im Template das ganze System lahmlegen können.
Anderes Beispiel:
if($katid2 == "") {
// [...]
exit;
}
// [...]
$rows = mysql_query("SELECT * FROM ".$prefix."log where kat = $katid2 && free = 0");
Die Variable $prefix wird in der config.php gesetzt, die ist nicht das Problem (auch wenn man für solch einen Fall unbedingt eine Konstante verwenden sollte), aber die Variable $katid2 wird dank Register-Globals auf $_GET['katid2'] gesetzt und im Programm nirgendwo auf gültige Werte geprüft, geschweige denn für den SQL-String entsprechend escaped.
Was das heißt? Dass das ein dickes Sicherheitsloch ist, über welches man nach belieben an deiner Datenbank rumspielen (Daten auslesen, manipulieren, löschen) kann.
Übrigens ist die Programmierung alles andere als konsequent. So sieht man an obigem SQL-Query z.B. schön, dass teilweise Variablen in doppelte Anführungszeichen gesetzt werden (spricht prinzipiell auch nichts dagegen), im gleichen Atemzug aber Einzelteile über den Verkettungsoperator zusammengesetzt werden.
Desweiteren werden in der config.php die Klassen TPL und DB deklariert (was bitte hat das mit Konfiguration zu tun?) und danach wird direkt noch eine Instanz davon erzeugt, im Falle von DB sogar gleich 3 Instanzen erzeugt. So etwas sollte Aufgabe des End-Scriptes sein und nicht gleich bei der Definition der Klassen geschehen.
Zu guter Letzt hat die Klasse DB ja immerhin eine Methode query(), welche einen SQL-Query absendet. Dies wird im Script teilweise auch genutzt ($db->query(...)), aber bloß verwendet der Autor dann auf einmal (siehe obiges Beispiel) die Funktion mysql_query() statt seiner eigenen Methode?
Ich wiederhole mich gerne noch einmal: Nutze das Script nicht, lass die Finger davon!
Viele Grüße,
~ Dennis.