Mike: PHP-Code aus Datenbank auslesen und ausführen?

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?

  1. 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

    1. 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

      1. 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

  2. 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