Sven Rautenberg: php-variable -> Javascript

Beitrag lesen

Moin!

Für Zahlen:

echo "var variablenname = $var";

Ok, allerdings benötigt Javascript ein Semikolon, um den Befehl abzuschließen. Also korrekt:

echo "var variablenname = $var;";

und wenn es ein String ist:

echo "var variablenname = "$var"";

Der Teufel steckt, wie immer, im Detail. Wenn die Variable $var Anführungszeichen enthält, dann schlägt dir Javascript den entstandenen Code um die Ohren. Also empfiehlt sich zumindest, ein addslashes() auf $var anzuwenden:

echo "var variablenname = "".addslashes($var)."";";

Bitte nicht mit den Semikolons und Anführungsstrichen durcheinanderkommen. ;)

Und noch ein Problem tritt auf: Der Browser wird die Zeichenfolge "</script>" als Ende des Javascript-Bereiches werten. Sie ist daher in einer Variablendefinition unbedingt zu vermeiden.

Die einzige mir auf den ersten _und_ zweiten Blick zuverlässige Methode erscheint mir, die Variable mit PHP zu codieren und mit Javascript wieder zu dekodieren:

echo "var variablenname = unescape("".rawurlencode($var)."");";

Getestet und für gut befunden, auch bei kritischen Werten. rawurlencode() hat die positive Eigenschaft, alle Zeichen, die nicht Zahl oder Buchstabe sind, als %HEX-Wert zu codieren. unescape ist das Javascript-Gegenstück dazu. Auf diese Weise erscheint </script> nur als %3C%2Fscript%3E im Text - was für den Browser und Javascript vollkommen ungefährlich ist. Und auch alle sonstigen Sonderzeichen sind maskiert - insbesondere " und '.

- Sven Rautenberg

--
"Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)