Der Martin: Datei einlesen und ausgeben, aber PHP-Code verarbeiten

Beitrag lesen

Hallo,

ich binde eine PHP-Datei (#1) in eine andere (#2) ein, das ganze geschieht via file_get_contents();. In (#1) befindet sich PHP-Code, der auch verarbeitet werden soll, durch diese Einleseprozedur wird der PHP-Code dann aber einfach auf der Seite im HTML-Quelltext mit ausgegeben.

ich finde es zwar ungewöhnlich, was du da tust - aber wenn ich dich richtig verstehe, möchtest du in einem String die *Ausgabe* eines anderen PHP-Scripts bekommen.

Dann ist der Ansatz mit file_get_contents() gar nicht schlecht. Schau mal nach, ob url_fopen_wrapper bei deinem Hoster aktiviert ist. Wenn ja, dann kannst du das gewünschte PHP-Scriptausgabe mit file_get_contents() erfassen, indem du nicht über den Dateinamen darauf zugreifst, sondern über HTTP.

Interessanterweise taucht deine Frage hier häufig in genau der umgekehrten Konstellation auf. Also so, dass jemand aus Unkenntnis über HTTP auf eine PHP-Scriptdatei zugreift und sich dann wundert, warum Variablen oder Funktionen aus dem eingebundenen Script nicht zur Verfügung stehen.

$bereich = $_GET['bereich'];
  $datei = "$bereich/themen/$thema.php";
  $einlesen = file_get_contents($datei);

Genau, und hier einfach über die HTTP-URL zugreifen, anstatt direkt auf die Datei. Übrigens ist erstens das Umkopieren von GET/POST-Parametern meistens unnötig, manchmal sogar eine Fehlerquelle (weil die Herkunft der Daten verschleiert wird), zweitens ist es problematisch, Fremddaten ($_GET) ungeprüft zu übernehmen: Wenn jemand ?bereich=../../fremdesverzeichnis angibt, kann er lustig auf Dateien zugreifen, von denen du nicht einem etwas ahnst. Das wäre beim HTTP-Zugriff dann auch nicht mehr möglich ...

So long,
 Martin

--
Wenn Zeit das Kostbarste ist, was wir haben, dann ist Zeitverschwendung die größte aller Verschwendungen.
  (Benjamin Franklin, amerikanischer Tüftler und Politiker)