PHP-Code aus Datenbank auslesen und ausführen?
Mike
- php
Hi,
ich hab in einem früheren Posting hier im Forum mitbekommen, dass der Befehl eval() dazu dienen soll, PHP-Code auszuführen (wenn ich ihn z. B. aus einer Datenbank auslese).
Ich hab das jetzt mal testweise gemacht.
// Abfrage
$abfrage = "SELECT content FROM netradio WHERE pageid = '$pageid'";
$ergebnis = mysql_query($abfrage);
while ($row = mysql_fetch_array ($ergebnis))
{
eval ("$row[content] = "$row[content]";");
echo $row[content];
}
Es klappt aber nicht... in $row[content] steht der HTML/PHP-Code, er wird zwar angezeigt aber der PHP-Teil wurde nicht geparst, sondern wird im Klartext angezeigt.
Kann da jemand weiterhelfen?
Hi!
eval ("$row[content] = "$row[content]";");
eval führt den PHP-Code aus, der ihm als Parameter übergeben wird
Warum die Zuweisung $row[content]=$row[content] ?
Warum die Anführungszeichen?
angenommen in $row[content] = "echo 'hallo';"
so funktioniert eval($row[content]);
willst du nun auch HTML-Code drin haben, so beachte:
$row[content]="?> <b> <? echo 'hallo'; ?> </b> <?";
dass du vor und nach den HTML-Teilen den PHP-Bereich schliessen/öffnen musst
wiederum mit eval($row[content]) auszuführen
mfg
brand
willst du nun auch HTML-Code drin haben, so beachte:
$row[content]="?> <b> <? echo 'hallo'; ?> </b> <?";
dass du vor und nach den HTML-Teilen den PHP-Bereich schliessen/öffnen musst
Hmm, irgendwie ist mir das nicht ganz klar. Zum Beispiel hat Die Variable $row[content] folgenden Inhalt:
<html>
<head></head>
<body>
<h1>Hier kommt PHP-Code</h1>
<?
echo "Das hier ist PHP-Code";
?>
</body>
</html>
Und ich habe das also nun alles in einer Datenbank stehen und frage es ab... und somit befindet sich das in der Variable $row[content]. Wenn ich diese jetzt mit echo anzeigen lasse, wird der PHP-Code auch angezeigt.
Also versuche ich mit eval den Code vorher durch den PHP-Parser zu schicken. eval($row[content]) müsste da doch funktionieren?
Naja, das tut es aber nicht...
Grüsse
Mike
Hi!
Also versuche ich mit eval den Code vorher durch den PHP-Parser zu schicken. eval($row[content]) müsste da doch funktionieren?
Nein!
Die Funktion eval() _erwartet_ PHP-Code.
Du übergibst ihr aber etwas das folgendermassen beginnt: "<html><head></..." -> das ist KEIN PHP-Code.
Deshalb (das habe ich auch in meinem ersten Posting geschrieben) musst du in dem String den "PHP-Bereich" sozusagen schliessen bevor der HTMl-Code beginnt:
"?> <html><head></..."
also: eval("?>".$row[content]."<?");
mfG
brand
Hi,
ich hab in einem früheren Posting hier im Forum mitbekommen, dass der Befehl eval() dazu dienen soll, PHP-Code auszuführen (wenn ich ihn z. B. aus einer Datenbank auslese).
Ich hab das jetzt mal testweise gemacht.
// Abfrage
$abfrage = "SELECT content FROM netradio WHERE pageid = '$pageid'";
$ergebnis = mysql_query($abfrage);
while ($row = mysql_fetch_array ($ergebnis))
{
eval ("$row[content] = "$row[content]";");
eval ('?>' . "$row[content] = "$row[content]";" . '<?php');
echo $row[content];
}
warum weiss ich nicht, steht aber so bei php.net in den comments
ciao romy