HTML + PHP in eval() ausführen
Da ich für mein Video-Modul eine solche Funktion brauchte, die HTML-PHP aus einer DB ausliest und ausgibt wollte ich euch sie gleich mal vorstellen. Sie stammt aus einem Thread im phpforum.
Nehmen wir als Beispiel ein einfaches Bild und eine PHP if-Abfrage:
<img src="/wp-content/2009/06/video_id_example.png" alt="Beispiel" /> <br /> <?php if(PAGE_ID != 20) { echo "Dieser Text wird nicht auf Seite 20 angezeigt"; } ?>
So steht der Code in der Datenbank. Vor der Ausgabe muss aber erst noch der PHP-Teil geparst werden. Dies geschieht folgendermaßen:
$ausgabe = eval('?>'.$db_array['code']); echo $ausgabe;
Das ?> bewirkt, dass der Interpreter weis, das jetzt erstmal kein PHP-Code mehr kommt. Denn die Funktion eval() parst von Natur aus nur reinen PHP-Code.
P.S. Bei dem Beispiel ist mir nix besseres eingefallen um die Uhrzeit ![]()
Eher nicht so gutes Beispiel…
- PHP Code gehört nicht in eine Datenbank
- eval = evil
mYkon du hast schon recht
ich hab ja keinem vorgeschrieben das so zu lösen
es gibt aber manchmal nur diese möglichkeit um php-code aufzuführen…
1) Ist das ein absolut unsauberes Beispiel.
2) Ist eval() eine super Sicherheitslücke.
3) Es wäre einfacher uns sauberer nur die zu ladenden PHP-Skripte in der DB zu bennennen, zu prüfen ob diese existieren und diese dann zu laden.
4) Ist eval() sehr langsam.
Ich kenne jetzt auch das PHPForum nicht, aber nach einer kurzen Begehung muss ich sagen, meide das Forum. Se unvorteilhafte und schlechte Beispiele sind ein absolutes No-Go! ;(