Ergebnis 1 bis 10 von 10

Thema: PHP Code aus Datenbank auslesen und parsen

  1. #1

    PHP Code aus Datenbank auslesen und parsen

    Hallo

    Ich brauche unbedingt eure Hilfe.
    Und zwar brauch ich einen Befehl, mit dem man PHPCode aus einer MySQL
    Datenbank auslesen und verwerten kann.
    Habe dabei in Erfahrung gebracht, dass das mit eval() gehen soll.
    Leider funktioniert nichts!!!

    Deshalb bitte ich erstmal um eine genauere und ausführlichere Beschreibung des
    Befehl als er im Handbuch beschrieben wird!
    Am besten vllt. schon gleich mit Code für die Datenbank (imaginär)!

    Wäre euch um eine schnelle Antwort sehr verbunden...
    Wer keine Lust hat, hier rein zu schreiben, der kann mich auch im ICQ oder MSN
    anschreiben^^


    Gruß, Kintaro



    PS: Später bringe ich meinen aktuellen Code rein, falls eure Anleitung mir nicht
    weiterhilft!

  2. #2
    Zitat Zitat von Goldenmaumau
    Habe dabei in Erfahrung gebracht, dass das mit eval() gehen soll.
    Leider funktioniert nichts!!!
    Was soll das heißen? Ich kann mir kaum vorstellen, dass wirklich nichts funktioniert. Wäre gut, wenn du sagen könntest, was nicht funktioniert. Naja, hier mal ein kleines Anwendungsbeispiel:
    Code:
    $res = mysql_query("SELECT `job` FROM `functions` WHERE `id` = '2';");
    eval(mysql_result($res,0,0));
    Dafür sieht die Tabelle functions so aus:
    Code:
    id(int)| job(text)
    -----------------------------
       1   | echo "First function.";
       2   | echo "Second function.";
    Und die Ausgabe müsste dann Second function. sein.

    freundliche Grüße, Rolus

  3. #3
    Also... der Content der Tabelle hat ein einfaches:

    include ("blub.php");

    als Inhalt...
    Das hier ist nun die Ausgabe:

    PHP-Code:
    include('mysql.inc');
        
    $query "SELECT content, DATE_FORMAT(uhrzeit, '%e.%c.%Y') AS uhrzeit FROM content WHERE name = '".$page."'";
        
    $sql mysql_query($query) or die(mysql_error());
        
    $ds mysql_fetch_object($sql) or die(mysql_error());
          
    $selected_page $ds->content;
          
    $last_edit $ds->uhrzeit;
          
    $php $ds->php;
    eval(
    "\$selected_page"); 
    bei eval kann auch ein Fehler vorhanden sein, aber ich habe auch schon mehrere
    Versionen versucht^^

    Wofür stehen bei deinem Code die 2 Nullen?


    Gruß, Maumau

    Geändert von Goldenmaumau (25.02.2006 um 18:36 Uhr)

  4. #4
    Zitat Zitat von Goldenmaumau
    eval("\$selected_page");
    Ich würde es mal mit eval($selected_page); versuchen, auf alle Fälle ohne Backslash.
    Zitat Zitat von Goldenmaumau
    Wofür stehen bei deinem Code die 2 Nullen?
    Das sind Parameter für mysql_result. Die erste Null gibt an, dass das erste der gefundenen Datensätze genommen werden soll (es wird aber eh nur eins gefunden). Und die zweite Null sagt, dass es sich um die zuerst abgefragte Spalte handelt (in meinem Fall `job` - die einzige abgefragte Spalte).

    freundliche Grüße, Rolus

  5. #5
    Also ich hab jetzt deine beiden Varianten versucht, aber statt zu includen wurde nur
    der Befehl ausgegeben!
    Also anstatt die Datei einzubinden, wurde einfach nur include ("bla.php"); ausgegeben.

    Gruß, Maumau

  6. #6
    Was passiert, wenn du das folgendermaßen machst?
    Code:
    echo $selected_page;
    eval($selected_page);
    Wird zweimal das gleiche ausgegeben?

    freundliche Grüße, Rolus

  7. #7
    Nope, nur einmal wieder das inclue("bla.php");


    Gruß, Kintaro

  8. #8
    Hm, also eval($selected_page); gibt den Include-Befehl aus und wenn du echo $selected_page; dazuschreibst, wird er trotzdem nur einmal ausgegeben? Da musst du wohl etwas rumprobieren (mal nur echo $selected_page; und so). Vielleicht merkst du auch einfach nicht, dass die Datei eingebunden wird. Zumindest ist der Lösungsansatz richtig. Nur bei der Ausführung machst du anscheinend Fehler, die für andere eventuell nicht nachvollziehbar sind.

    freundliche Grüße, Rolus

  9. #9
    Zitat Zitat von Rolus
    Hm, also eval($selected_page); gibt den Include-Befehl aus und wenn du echo $selected_page; dazuschreibst, wird er trotzdem nur einmal ausgegeben? Da musst du wohl etwas rumprobieren (mal nur echo $selected_page; und so). Vielleicht merkst du auch einfach nicht, dass die Datei eingebunden wird. Zumindest ist der Lösungsansatz richtig. Nur bei der Ausführung machst du anscheinend Fehler, die für andere eventuell nicht nachvollziehbar sind.

    freundliche Grüße, Rolus
    Jo das stimmt. Hab ihm auch schon paar Lösungen gezeigt die anscheinend alle nicht funktionieren. Ich guck aber nochmal danach.

  10. #10
    Ich hab den entscheidenden Fehler gefunden, nachdem Maumau mir den kompletten Code gegeben hat. Es lag überhaupt nicht am eval() sondern an folgendem if:
    Code:
    $php = $ds->php;
    if ($php == 0) {
        echo $selected_page;
    } else {
        eval($selected_page);
    }
    Es wurde immer echo $selected_page; ausgeführt werden, da ein String in PHP immer == 0 ist und Daten die man per mysql_* abruft immer Strings sind, unabhängig davon welchen Typ sie in der MySQL-Datenbank besitzen. Lösung ist einfach $php typ-sicher mit === "0" zu vergleichen. Also im Endeffekt:
    Code:
    if ($php === "0") {
        echo $selected_page;
    } else {
        eval($selected_page);
    }
    Alternativ müsste man auch $php am Anfang zu int casten können und dann mit == 0 vergleichen, hab ich jetzt nicht ausprobiert. Das wäre dann vorher einfach $php = (int)$ds->php;

    P.S.: 1TBS sucks.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •