PHP Code aus einem String heraus ausführen
Wie kann ich PHP Code der in einer Datenbank gespeichert ist ausführen?
Dieses funktioniert mit der Funktion
eval von PHP.
eval wertet einen String aus, als wäre er PHP-Code.
Aufbau:
mixed eval(string,code_str)
Wichtig ist hierbei das Sie den String gründlich überprüfen um Crackern nicht eine Möglichkeit zu geben beliebigen Code auf dem Server auszuführen.
Beschreibung:
Beim Gebrauch von
eval() gilt es einige Faktoren zu beachten.
Die Zeichenkette
code_str muss gültigen PHP-Code enthalten,
einschließlich syntaktisch richtiger Begrenzungszeichen
(also incl. ";"-Abschluss-Zeichen für einzelne Anweisungen,
sonst bricht der PHP-Parser in der folgenden Zeile mit einem Fehler ab).
Die innerhalb von
eval vorgenommenen Variablen-Zuweisungen nach durchlauf
auch im Hauptskript ihre Gültigkeit
behalten.
Eine
return-Angabe beendet sofort die Auswertung des Strings.
Mit PHP4 können sie ein
return verwenden,
um das Ergebnis der Funktion
eval() zu erhalten.
In PHP3 ist
eval() nämlich vom Typ void und liefert nichts
zurück.
Beispiel:
- <?php
- $page = 'webmaster-eye.de';
- $was = 'Tutorials';
- $str = '$page bietet viele $was an.<br />';
- echo $str;
- eval ("\$str=\"$str\";");
- echo $str;
- ? />
Das Script gibt folgendes
aus:
$page bietet viele $was an.
webmaster-eye.de bietet viele Tutorials an.
Beachten sie bitte das Setzen des Begrenzungs-Zeichens ";" in code_str sowie den Gebrauch des "\"-Zeichens.