Der Martin: Mal wieder die Kontext-Problematik

Beitrag lesen

Hallo,

<textarea name="Nachricht" cols="50" rows="8"><?php echo $_GET['nachricht']; ?></textarea>

das ist schonmal schlecht - sobald jemand ein '<' eingibt, kommt der HTML-Parser durcheinander. Kontextwechsel beachten; HTML-eigene Zeichen müssen geeignet maskiert werden. An dieser Stelle mit htmlspecialchars().

window.location='index.php?content=kontakt&Name=$name&Mail=$email&Betreff=$betreff&Nachricht=$nachricht';

JETZT kommen wir weiter! Du hast also gar kein PHP-Problem, sondern ein Javascript-Problem!
Stell dir vor, $nachricht enthielte Zeilenumbrüche - wie würde dann der erzeugte Javascript-Code aussehen? Jedenfalls nicht mehr syntaktisch korrekt. Kontextwechsel beachten! An dieser Stelle vor allem, indem du dafür sorgst, dass anstelle eines Zeilenumbruchs im Javascript-String ein \ gefolgt von n ausgegeben wird (NICHT das Steuerzeichen \n).

So long,
 Martin

--
Lehrer:  Wieviel ist die Hälfte von 8?
Schüler: Kommt drauf an. Waagrecht 0 und senkrecht 3.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(