Torsten Giebl: Ausführen von PHP Statements in generiertem Content für CMS Syst

Hallo !

Ich schreibe gerade an einem sehr kleinen CMS System und
das funktioniert so weit auch ganz gut. Jetzt möchte ich dem User
erlauben das auch PHP Statements, die in seinem Content
stehen, ausgeführt werden.

Das CMS System holt sich aus der Datenbank die Seitenteile
und baut daraus die Seite auf, der generierte Text wird aber
jetzt einfach ausgegeben und nicht nochmal ausgeführt.

Ein Beispiel :

echo '<?php phpinfo (); ?>';

Gibt zwar den Text <?php phpinfo ... aus, aber ich suche eine Möglichkeit
das die Seite sobald sie generiert wurde, nochmal in php ausgeführt wird,
so das auch User PHP Statements die eventuell aus Seitenteilen die aus
der Datenbank kommen ausgeführt werden.

Gibt es da einen Weg ?

Vielen Dank.

  1. Hallo,

    das geht, wenn es sinnvoll ist. du musst schauen, dass die spitzen klammern nicht umkodiert werden zu &lt; &gt; und solltest wissen, dass der code natürlich auch mit falschen befehlen alles ruinieren könnte.

    Gruß

    jobo

    1. Hallo !

      das geht, wenn es sinnvoll ist. du musst schauen, dass die spitzen klammern nicht umkodiert werden zu &lt; &gt; und solltest wissen, dass der code natürlich auch mit falschen befehlen alles ruinieren könnte.

      Meine Frage war ja auch, wie. So direkt wird
      ja mit echo ausgegebener Text nicht ausgeführt,
      sondern nur ausgegeben. Aber ein anderer User hat ja
      schon gepostet das es mit der eval Funktion klappt.

      Danke.

      1. Hallo,

        Meine Frage war ja auch, wie. So direkt wird
        ja mit echo ausgegebener Text nicht ausgeführt,
        sondern nur ausgegeben. Aber ein anderer User hat ja
        schon gepostet das es mit der eval Funktion klappt.

        Oder abspeichern und includen.

        Gruß

        jobo

  2. Hi!

    Gibt zwar den Text <?php phpinfo ... aus, aber ich suche eine Möglichkeit
    das die Seite sobald sie generiert wurde, nochmal in php ausgeführt wird,
    so das auch User PHP Statements die eventuell aus Seitenteilen die aus
    der Datenbank kommen ausgeführt werden.

    eval() ist die Funktion um zur Laufzeit Code auszuführen. include und Co. eignen sich auch, setzen aber Dateien voraus. Beachte stets, dass sich dadurch ein stark erhöhtes Sicherheitsrisiko ergibt. Mach dir also Gedanken darüber, welche Wege die Daten insgesamt gehen (von der Eingabe bis letzlich zur Ausgabe) und wie diese komplett abgesichert werden können. Desweiteren sollten dann auch die Inhalte-Autoren, die Code erstellen dürfen, genau wissen, welche Gefahren von fehlerhaftem Code ausgehen können und diese zu vermeiden wissen. Sprich: es müssten ebenfalls Programmierer sein.

    Lo!

    1. Hallo !

      eval() ist die Funktion um zur Laufzeit Code auszuführen. include und Co. eignen sich auch, setzen aber Dateien voraus. Beachte stets, dass sich dadurch ein stark erhöhtes Sicherheitsrisiko ergibt. Mach dir also Gedanken darüber, welche Wege die Daten insgesamt gehen (von der Eingabe bis letzlich zur Ausgabe) und wie diese komplett abgesichert werden können. Desweiteren sollten dann auch die Inhalte-Autoren, die Code erstellen dürfen, genau wissen, welche Gefahren von fehlerhaftem Code ausgehen können und diese zu vermeiden wissen. Sprich: es müssten ebenfalls Programmierer sein.

      Super. Genau sowas habe ich gesucht. Der einzige Nachteil
      von eval ist, das man leider nicht einfach direkt HTML Quelltext
      reinwerfen kann. Gäbe es dafür auch eine einfache Lösung ?

      Falls nein, macht nichts. In meinem CMS System soll eine Seite eh aus
      Parts wie Plaintext, HTML Quelltext und PHP Code Teilen bestehen.
      Dann kann man in der Datenbank auch hinterlassen ob man dem User
      PHP Code Teile zutraut oder nicht.

      Danke.

      1. Hi!

        Super. Genau sowas habe ich gesucht. Der einzige Nachteil
        von eval ist, das man leider nicht einfach direkt HTML Quelltext
        reinwerfen kann. Gäbe es dafür auch eine einfache Lösung ?

        Ja, auch eval() kennt <?php und ?>, nur eben andersrum. Wenn du den PHP-Modus verlassen willst, musst du ?> schreiben und wieder hinein geht's mit <?php. Du kannst das ja noch an den zu evaluierenden String anhängen.

        Lo!

        1. Hallo !

          Ja, auch eval() kennt <?php und ?>, nur eben andersrum. Wenn du den PHP-Modus verlassen willst, musst du ?> schreiben und wieder hinein geht's mit <?php. Du kannst das ja noch an den zu evaluierenden String anhängen.

          Danke, du hast den Tag gerettet. Ich muß ja
          eval nur ein '?>'+HTML_Content hinwerfen und alles
          funzt wunderbar. Im HTML Content werden ja dann <?php und ?>
          wieder korrekt genutzt.

          JUHU.

          1. Hi!

            Danke, du hast den Tag gerettet. Ich muß ja eval nur ein '?>'+HTML_Content hinwerfen und alles funzt wunderbar.

            Soweit ich weiß, musst du auch noch mit <?php am Ende wieder in den PHP-Modus schalten, aber das wirst du ja sehen, ob es ohne geht oder nicht.

            Lo!