Computerwissenschaften

Grundlegendes zum PHP-Sprachkonstrukt Eval ()

Das PHP- Konstrukt eval () wird verwendet, um eine Eingabezeichenfolge als PHP auszuwerten und dann als solche zu verarbeiten. Eval () ist keine Funktion, aber es funktioniert wie eine in dem Sinne, dass es alles ausgibt – außer dass es nicht als Text, sondern als auszuführender PHP-Code ausgegeben wird. Eine Verwendung des Konstrukts eval () besteht darin, Code in einer Datenbank zu speichern, um ihn später auszuführen.

 

Beispiel für ein Eval () – Sprachkonstrukt

Hier ist ein einfaches Beispiel für die Codierung des Sprachkonstrukts eval ().


 ";

 

 eval ("\ $ a =" $ a ";");

 

drucke $ a. ""

 

";

 

 ?>

Dieses Codebeispiel gibt aus, dass meine Freunde $ name und $ name2 sind, wenn sie zum ersten Mal mit der print-Anweisung aufgerufen werden, und es gibt  Joe und Jim aus, wenn sie das zweite Mal nach dem Ausführen von eval () aufgerufen werden.

 

Anforderungen und Eigenschaften von Eval ()

  • Der übergebene Code kann nicht in das Öffnen und Schließen von PHP-Tags eingeschlossen werden.
  • Der übergebene Code muss gültiges PHP sein.
  • Alle Anweisungen müssen mit einem Semikolon abgeschlossen werden.
  • Eine return- Anweisung beendet die Code-Auswertung.
  • Jede in eval () definierte oder geänderte Variable bleibt nach dem Beenden erhalten.
  • Was für ein schwerwiegender Fehler im ausgewerteten Code auftritt, wird das Skript beendet.
  • Da eval () ein Sprachkonstrukt und keine Funktion ist, kann es nicht in Funktionen höherer Ordnung verwendet werden.

 

Die Gefahr der Verwendung von Eval ()

Das PHP-Handbuch rät von der Verwendung des Konstrukts eval () ab und betont, dass seine Verwendung „sehr gefährlich“ ist, da beliebiger PHP-Code ausgeführt werden kann. Benutzer werden angewiesen, eine andere Option als eval () zu verwenden, sofern dies nicht möglich ist. Die Verwendung des Konstrukts PHP eval () birgt Sicherheitsrisiken.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.