dedlfix: PHP-Variable in JavaScript nutzen

Beitrag lesen

Tach!

... um nochmal auf deinen Titel "PHP-Variable in JavaScript nutzen" zu antworten.

Ja klar geht das.

Nein, es geht nicht. Der Unterschied mag Wortklauberei sein, aber er ist wichtig für das Verständnis für den Fehler, der in deinem Code steckt.

PHP-Variablen sind nicht in Javascript nutzbar. Wohl aber kann der Wert in der Variablen in Javascript nutzbar gemacht werden, indem man:

Erzeuge mit PHP Javascript Code und schreibe ihn in das HTML-Dokument:

Genau, man erzeugt also neuen Code mit dem Inhalt dem Variableninhalt als Literal. Ein Literal ist die Darstellung eines Wertes, so wie er geschrieben werden muss, um gültigen Code zu erzeugen. Das Literal des Strings foo ist "foo", also der Wert eingerahmt in Anführungszeichen. Und dann gibts da noch die Sonderregeln für Anführungszeichen (und andere), die nämlich als Escape-Sequenz geschrieben werden müssen.

$_POST['name']  = 'Andreas';
$_POST['beruf'] = 'Maler';

$javascript = "
<script>
var name  = '".$_POST['name']."';
var beruf = '".$_POST['beruf']."';
alert( name +' ist ' +beruf );
</script>
";

Und diese Sonderregeln beachtet dieser Code nicht. Andreas und Maler sind zwei Strings ohne Anführungszeichen, da fällt das nicht weiter auf. Aber wenn jemand Anführungszeichen (in diesem Fall einfache ') in ein Eingabefeld eingibt, dann gibt es zumindest einen Syntaxfehler im Javascript-Code. Im ungünstigsten Fall kann das zum Ausführen beliebigen untergeschobenen Codes führen. Das ist eine der häufigsten Sicherheitslücken.

Diese Problematik, und auch wie man das für Javascript verhindert, ist in unserem Wiki unter Kontextwechsel beschrieben.

dedlfix.