Roger: quellcode aus datenbankfeld ausführen

moin!

bisher hab ich immer text in einer datenbank stehen gehabt. jetzt will ich aber auch php code darin stehen haben, der ausgeführt werden soll (zb: echo "hallo";).
den text konnte man ja simpel ausgeben: echo $array['dbtabfeld']; aber wie bringe ich den quellcode dazu, dass er ausgeführt wird? mit echo geht's ja nicht...

gruß.
roger.

--
Dein eigenes Newslettersystem auf deiner Homepage: http://newsletter.maennchen1.de
  1. Moin.

    wie bringe ich den quellcode dazu, dass er ausgeführt wird?

    Mit eval(). Aber das halte ich in fast jedem Fall für sehr unsauber. Ich rate dir, daß du versuchst, auf eval() zu verzichten, wenn es möglich ist.

    Gruß, rob

  2. Hallo,

    den text konnte man ja simpel ausgeben: echo $array['dbtabfeld']; aber wie bringe ich den quellcode dazu, dass er ausgeführt wird? mit echo geht's ja nicht...

    Da gibt es ein anderes schönes wort: eval

    Gruß
    Andi

  3. Hallo,

    bisher hab ich immer text in einer datenbank stehen gehabt. jetzt will ich aber auch php code darin stehen haben, der ausgeführt werden soll (zb: echo "hallo";).
    den text konnte man ja simpel ausgeben: echo $array['dbtabfeld']; aber wie bringe ich den quellcode dazu, dass er ausgeführt wird? mit echo geht's ja nicht...

    neben eval(), was dir ja schon erklärt wurde gibt es noch eine "umständliche" Möglichkeit.
    Schreibe deinen DB-Quellcode in eine Datei (auf eindeutigen Namen z.B. über sessionid achten) und include diese anschließend.
    Am Ende deines PHP-Codes machst du eine "Garbage-Collection", will heißen, du löschst die Datei wieder.

    cu,
    Michael

    1. Hi,

      Schreibe deinen DB-Quellcode in eine Datei (auf eindeutigen Namen z.B. über sessionid achten) und include diese anschließend.

      hat das irgendeinen Vorteil?

      Schöne Grüße
      Julian

      --
      "Real programmers can write assembly code in any language." - Larry Wall
      1. Hallo,

        Schreibe deinen DB-Quellcode in eine Datei (auf eindeutigen Namen z.B. über sessionid achten) und include diese anschließend.

        hat das irgendeinen Vorteil?

        ja, möglicherweise, das hängt sicher auch vom auzuführenden Code ab.
        Ich habe das als Alternative zum Post von rob gesehen. Selbst habe ich noch nicht mit eval() gearbeitet.
        Hier http://de3.php.net/manual/de/function.eval.php findest du aber auch Kommentare z.B. zur Fehlerbehandlung, die rob's Ansicht untermauern.

        cu,
        Michael

        1. Hi,

          Schreibe deinen DB-Quellcode in eine Datei (auf eindeutigen Namen z.B. über sessionid achten) und include diese anschließend.

          hat das irgendeinen Vorteil?

          ja, möglicherweise, das hängt sicher auch vom auzuführenden Code ab.

          hast du ein Beispiel? Ich finde einfach keinen Vorteil.

          Schöne Grüße
          Julian

          --
          "Real programmers can write assembly code in any language." - Larry Wall
          1. Hallo,

            ja, möglicherweise, das hängt sicher auch vom auzuführenden Code ab.

            hast du ein Beispiel? Ich finde einfach keinen Vorteil.

            sicher ist es generell fraglich, php-code in einer DB vorzuhalten, wenn man die dann erst in Dateien speichert um sie dann zu includen. Aber der OP hat sich ja in diesem Thread nicht mehr zu Wort gemeldet, möglicherweise interessieren ihn unsere Antworten ja nicht, so können wir auch nicht fragen, warum er das überhaupt so macht.
            Hast du dir den Link angesehen, den ich angegben hatte?
            Dort gibt es klare Kommentare, bzgl. der schlechten Fehlerbehandlung beim Benutzen von eval() und dem schlechten Laufzeitverhalten.

            Zitat:

            james.taylor at stealthnet dot net
            10-Feb-2005 10:46
            Please note, eval does not return all fatal errors - there seem to be two types of fatal error - fatal error caused by script (parse, etc) and fatal error caused by death of application (memory run out, time out (?)).

            Using a set-error handler does not catch these errors, they are a true death. You can not use eval to detect the death of a risky application if that involves one of these fatal errors.

            See thread starting at http://news.php.net/php.general/208333 for original discussion

            Ich kann nicht beurteilen, ob das so stimmt, aber wenn du mehr über die Nachteile von eval() wissen möchtest, dann wende dich bitte an rob, er hat schließlich vor der Verwendung gewarnt, ich habe lediglich eine mögliche Alternative aufgezeigt.

            cu,
            Michael