dedlfix: Hilfe - SQL syntax

Beitrag lesen

Hi!

Kontextwechsel beachten!
... tut mir Leid, das mit dem "Kontextwechsel" verstehe ich einfach nicht

<input type="text" name="foo" value="bar">

Das dürfte dir bekannt sein. Wenn am Ende

<input type="text" name="foo" value="benutzereingabe">

rauskommen soll und die Benutzereingabe

Hallo "Welt"!

lautet, dann bekommst du als Ergebnis, wenn du das einfach so einfügst

<input type="text" name="foo" value="Hallo "Welt"!">

Das " vor dem Welt beendet den mit dem " nach dem value= begonnenen Attributtext. Das darf nicht sein. Richtig wäre

<input type="text" name="foo" value="Hallo &quot;Welt&quot;!">

Du hattest mit

Hallo "Welt"!

einen String. Den willst du in den Kontext "HTML-Code" einfügen, also musst du die HTML-Regeln beachten und " als &quot; notieren.

Und das musst du in jedem Fall beachten, wann immer du Daten irgendwo einfügst. In meinem Beispiel siehst du das recht deutlich, aber in der Praxis verbergen sich die Strings gern in Variablen.

<input type="text" name="foo" value="$wert">

Einem $wert siehst du es derzeit nicht an, aber zur Laufzeit kann da alles mögliche drinstehen, auch " (Anführungszeichen). Deswegen ist es so wichtig, dass du die Kontextwechsel (richtig) erkennst und weißt, was zu unternehmen ist, um die einzufügenden Werte korrekt zu behandeln.

printf('<input type="text" name="foo" value="%s">', htmlspecialchars($wert));

Lo!