Sven Rautenberg (outa house): mysql-db auslesen mit while und alle Werte in einer var speichen

Beitrag lesen

Moin!

Wann immer du Werte in einen Kontext bringst, sind diese Werte kontextgerecht zu behandeln. Wenn jemand aus Côte d'Ivoire kommt, bekommst du nur einen Syntaxfehler.
$input = "<?php \n\$namen = '$ganznamen';\n ?>";
Was für den Kontext "Variableninhalt kommt in SQL" gilt, gilt natürlich auch für den Kontext "Variableninhalt kommt in PHP-Sourcecode" - nur sind die Konsequenzen hier drastischer, wenn man dabei irgendeinen Fehler macht. Ausserdem ist das Escaping komplizierter, weil es für die hier notwendigen Ersetzungen von Zeichen in sichere Ersatzzeichen keine komplett fertige Funktion gibt.

Ich erwähnte etwas weiter unten und in etwas anderem Zusammenhang das passende Werkzeug dazu: htmlspecialchars(). So wäre es für diese Stelle richtig gewesen:

Das ist das falsche Werkzeug.

Sinn der Übung ist es, PHP-Code zu generieren. Der Code soll so aussehen, dass eine Variable den Inhalt eines Strings zugewiesen bekommt, und der Stringinhalt stand vorher in der Datenbank.

Mit HTML-Escaping bist du da vollkommen falsch. Stattdessen musst du dich auf die Vorkommen von Anführungszeichen sowie Steuerzeichen wie Newline, Linefeed, Tabs etc. konzentrieren. Halt alle die Zeichen, die normalerweise unsichtbar bleiben.

- Sven Rautenberg