uepselon: PHP Seite in PHP Seite einbinden?

Hallo,

der Titel klingt vielleicht etwas verwirrend, aber ich hab folgendes Problem:

Ich habe eine php datei namens shop.php
in dieser Datei will ich nun eine Weitere Datei die per Parameter übergeben wurde öffnen und per echo ausgeben.

Sprich: shop.php?site=neu.php

echo inhalt von neu.php

Das Problem ist nun das der Inhalt von neu.php ja nur als Text ausgegeben wird, php Code in neu.php wird nicht berücksichtigt,
wie schaff ich es das vor der Ausgabe noch der PHP Code in neu.php
ausgeführt wird?

Gruß

ueps

  1. Hallo ueps,

    willkommen zum Tag des Dokumentations-Links. ;)

    http://www.php.net/manual/de/function.include.php
    http://www.php.net/manual/de/function.require.php

    Wenn Du die Ausgabe von neu.php erst komplett einsammeln willst und danach erst (ev. formatiert o.ä.) ausgeben willst, ist Output Buffering Dein Ziel:
    http://www.php.net/manual/de/ref.outcontrol.php
    http://www.php.net/manual/de/function.ob-get-contents.php
    http://www.php.net/manual/de/function.ob-get-length.php

    HtH, Thoralf

    1. Hi,

      Danke das hat mir weitergeholfen.
      War ganau das was ich gesucht hab.

      Gruß

      ueps

      1. Immer gern. :)

    2. Moin!

      willkommen zum Tag des Dokumentations-Links. ;)

      http://www.php.net/manual/de/function.include.php
      http://www.php.net/manual/de/function.require.php

      Zu beachten ist: Wenn die zu includierende Datei per URL angegeben wird, dann ist zwingend dieser Wert sorgsamst zu parsen. Das Include wirkt nämlich nicht nur auf das lokale Dateisystem, sondern öffnet ggf. auch Dateien per HTTP. Auf diese Weise kann man sich beliebigen fremden Code in die eigene Seite einbauen lassen, welcher dann im Prinzip alles tun kann: Die PHP-Skripte und Verzeichnisse listen, die Datenbankanbindung erfahren, die Datenbank löschen, die ganze Website löschen oder "anpassen".

      Dieses Verhalten kann man z.B. ganz grundsätzlich abschalten, indem die "URL fopen wrappers" deaktiviert werden.

      - Sven Rautenberg

      1. Guten Nachmittag,

        Zu beachten ist: Wenn die zu includierende Datei per URL angegeben wird, dann ist zwingend dieser Wert sorgsamst zu parsen. Das Include wirkt nämlich nicht nur auf das lokale Dateisystem, sondern öffnet ggf. auch Dateien per HTTP. Auf diese Weise kann man sich beliebigen fremden Code in die eigene Seite einbauen lassen, welcher dann im Prinzip alles tun kann: Die PHP-Skripte und Verzeichnisse listen, die Datenbankanbindung erfahren, die Datenbank löschen, die ganze Website löschen oder "anpassen".

        Völlig korrekt. Einfachste Lösung scheint mir zu sein, die URLs in ein assoziatives Array zu packen und mit ordentlicher Fehlerbehandlung als Parameter nur den Index in das Array zu übergeben. Damit können nur vorgegebene URLs aufgerufen werden.

        Gruss aus der prallen Sonne, Thoralf

        1. Danke,

          diese Sicherheitslücke  hätte ich doch gleich übersehn.

          Gruß

          ueps

  2. Sprich: shop.php?site=neu.php

    echo inhalt von neu.php

    Das Problem ist nun das der Inhalt von neu.php ja nur als Text ausgegeben wird, php Code in neu.php wird nicht berücksichtigt,
    wie schaff ich es das vor der Ausgabe noch der PHP Code in neu.php
    ausgeführt wird?

    Hallo,

    probier es doch einfach mal mit inlude :-))

    Also muss in deiner shop.php an der stelle, an der neu.php ausgegeben werden soll stehen:

    if($site != "") include($site);

    dann wird die gesamte datei neu.php geparst und ausgeben.

    Ciao

    Christian

  3. per incluce($site); vielleicht