phpbar.de logo

Mailinglisten-Archive

[php] PHP-Code aus Datenbank?

[php] PHP-Code aus Datenbank?

Ithamar Garbe php_(at)_phpcenter.de
Sat, 04 Aug 2001 13:29:22 +0200


Carsten Bleyer wrote:

> $content = "?>$content<?";

>
>     echo eval $content;
> Das ist ja offensichtlich falsch, da schon die Klammern fehlen. Wie muß
> ich jetzt den Code verarbeiten, damit es korrekt ist?
> // $content = "?>$content<?";
>     echo eval ("?>$content<?");
> oder der Variable content vorher einen Wert zuweisen und dann ohne "$" ?

Ich würde die erste Zeile in einfache Anführungszeichen setzen ( ' ), sonst
werden sie schon vor der eval()-Funktion geparst.
Der PHP-Code soll ja erst in der eval()-Funktion ausgeführt werden, bei
obiger Version setzt PHP aber die Variable $content aus "?>", dem Inhalt von
$content und "<?" zusammen, das willst du ja nicht.
Beispiel:
$content = "test";
$content = "?>$content<?";

Dies ergäbe:
$content = "?>test<?";

eval($content) würde also nichts mehr zu bearbeiten haben.
Mit den einfachen Anführungszeichen wird der Code erst in der eval-Funktion
ausgeführt, was du ja bezwecken möchtest.

Weiteres Beispiel:

$eins = 1;
$zwei = 2;

$content = "$eins + $zwei";
ergibt bei eval($content):
eval("1 + 2");

Machst du dagegen:
$content = '$eins + $zwei';
ergibt das ganze bei eval($content):
eval("$eins + $zwei");

Lange Rede, kurzer Sinn: Bei einfachen Anführungszeichen wird der String als
Text genommen, bei doppelten wird der Text nach Variablen durchsucht und
diese ersetzt.

Aber wahrscheinlich weisst du das eh schon und ich hab wieder zuviel
geschrieben ;-) So ist das halt bei mir. *g* Vielleicht war das gar nicht
der Fehler, probiers einfach aus.

Gruss,
Ithamar Garbe



php::bar PHP Wiki   -   Listenarchive