Hi!
// GET-Variable für db-ID
$id = $_GET["id"];
Warum kopierst du den Wert um und greifst nicht direkt darauf zu? Und warum hast du ausgerechnet diese Zeile im geposteten Code gelassen, obwohl nichts davon in selbigem verwendet wird?
$dbabfrage2 = mysql_query("SELECT * FROM navi WHERE id >= '0'");
while($result2 = mysql_fetch_assoc($dbabfrage2))
Berücksichtigst du auch Fehlerzustände, die dir mysql_query() über ihren Rückgabewert mitteilt?
{
$name_navi = $result2[name_navi];
$link_navi = $result2[link_navi];
}
Schau dir die while-Schleife mit diesem Inhalt nochmal genau an.
$tpl->assign("name_navi", "$name_navi");
$tpl->assign("link_navi", "$link_navi");
Warum rahmst du Variablen mit String-Begrenzern ein?
Weder an der Stelle noch in der Template-Klasse achtest du auf die Syntaxregeln der Stelle, an der diese Werte eingefügt werden sollen. Diese Kontextwechsel nicht zu beachten ist einer der häufigsten Programmierfehler. Da die Methode assign() nicht wissen kann, in welchem Kontext die übergebenen Werte letzlich landen, müsste sie so ergänzt werden, dass sie selbst für die zu unterstützenden Systeme (HTML, Javascript, evtl. CSS) die entsprechenden Regeln berücksichtigt (das konkrete System müsste als weiterer Parameter übergeben werden).
Und hier noch die Template-Klasse: (welche ich über google gefunden habe)
Die schau ich mir nicht genauer an. Dass sie den Kontextwechsel nicht unterstützt macht sie in meinen Augen schon unbrauchbar. Oder steht wenigstens in ihrer Dokumentation ein großer Hinweis, dass man als Anwender selbst dafür zu sorgen hat, nur du hast ihn ignoriert?
Das CMS soll recht simple gehalten sein, damit auch absolute Laien es benutzen können/sollten :)
Was genau soll denn der absolute Laie an dem System noch machen? Darf er die Templates selbst anpassen? Dann kommt auch er mit der Problematik des Kontextwechsels in Berührung, den er nicht ignorieren sollte, wenn ihm sein System und die seiner Besucher lieb sind. Die Alternative wäre, dass er außer reinem Text eintippen gar nichts machen kann. Dann musst du aber nicht einfach nur für die Funktionalität sondern auch für die Sicherheit sorgen.
Lo!