Michael St.: Fremde Dokumente aus URL einbinden

Hi Forumsmitglieder!

Ne einfache Frage aber meinem PHP-Buch ist diese einfach nicht zu entlocken.

Ich habe eine PHP-Seite sagen wir mit dem namen "layout.php" in dieses will ich verschiedene Dokumente über einen URL Aufruf einbauen.

Schwierig zu erklären, ich probiers mal anhand eines Beispiels:

Also ich will im Browser etwas nach dem Motto "http://www.url.at/layout.php?pfad/dateiname" eingeben.

Im Browser soll dann die Seite "layout.php" aufgerufen werden in welcher dann eine Zeile ala <? include("pfad/dateiname"); ?> steht

Die Dateien liegen alle am selben Server (relative Pfadangaben würden also reichen).

Könnte mir da wer helfen?

Danke im voraus.

Michael aus Wien

  1. Du musst eine Variable vergeben...
    Bin auch kein Pro aber ich würds so machen:

    http://www.url.at/layout.php?url=pfad/dateiname

    Nun kannst du das so einbinden:

    <?php include("$url"); ?>

    mfg,
    mabu

    1. Hallo mabu,

      http://www.url.at/layout.php?url=pfad/dateiname
      Nun kannst du das so einbinden:
      <?php include("$url"); ?>

      nein, so nicht. dann kann nämlich jemand daherkommen und einfach
      ...layout.php?url=http://www.server.de/boesesscript.php
      eingeben, und dann beliebige Dinge veranstalten. Wie das richtig geht steht im Archiv z.B. </archiv/2002/12/32844/#m178373>.

      Grüße aus Nürnberg
      Tobias

      1. </archiv/2002/12/32844/#m178373>

        Danke erstmal für den Link. Sowas steht in meinem PHP-Buch natürlich nicht.

        Zum laufen bringe ich die empfohlene Lösung allerdings auch nicht

        Hier mal das Script:

        <HTML><HEAD><TITLE></TITLE></HEAD><body>

        <? $pfad['test']="test1/test2.txt"; ?>

        ...
        HTML-Text dazwischen
        ...

        <? if (isset($pfad[$_GET['goto']])
        { include($pfad[$_GET['goto']]); } ?>
        else
        { print ("Gibt es nicht"); }

        </body></html>

        Die URL wäre demnach: www.url.at/index.php?goto=test

        Wenn ich das so mache bekomme ich in der Zeile "include($pfad[$_GET['goto']]);" einen "Parse error"

        Was mache ich falsch?

        mfg
        Michael

        1. Hallo Michael,

          <? if (isset($pfad[$_GET['goto']])

          der Fehler ist gemein :-) am ende der Zeile fehlt noch eine schließende Klammer (der if-Bereich muss geschlossen werden und natürlich auch noch isset().
          außerdem darfst du nicht auf isset() abfragen (das ist immer wahr, weil $pfad['test'] immer gesetzt ist. Du musst auf Existenz der Datei prüfen also file_exists statt isset schreiben.

          { include($pfad[$_GET['goto']]); } ?>

          den php-Bereich darfst du natürlich erst nach dem schließen des else-Bereiches beenden (also zwei Zeilen tiefen)

          Grüße aus Nürnberg
          Tobias

          1. Hi Tobias

            der Fehler ist gemein :-) am ende der Zeile fehlt noch eine schließende Klammer

            Argh, auf die abschliessenden Semiklone schaue ich ja. Diesmal wars ne Klammer.

            außerdem darfst du nicht auf isset() abfragen (das ist immer wahr, weil $pfad['test'] immer gesetzt ist. Du musst auf Existenz der Datei prüfen also file_exists statt isset schreiben.

            Danke!

            den php-Bereich darfst du natürlich erst nach dem schließen des else-Bereiches beenden (also zwei Zeilen tiefen)

            Danke, den habe ich dann auch noch selber gefunden.

            Funktioniert übrigens. Vielen Dank!

            Falls diesen Beitrag mal wer im Archiv findt hier das komplette Script:

            <HTML><HEAD><TITLE></TITLE></HEAD><body>

            <? $pfad['test']="test1/test2.txt"; ?>

            Test<BR>

            <? if (file_exists($pfad[$_GET['goto']]))
            { include($pfad[$_GET['goto']]); }
            else
            { print ("Gibt es nicht"); }?>

            </body></html>

            Aufruf über: http://www.url.at/index.php?goto=test

            Schöne Grüsse aus Wien
            Michael

    2. Also so funktioniert es nicht oder muss ich die Variabel irgendwie speziell definieren?

      lg
      Michael