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)