Hallo
Ich bekam nun schon den Tip es mit include zu versuchen.
Beides scheint zu funktionieren.
Ich habe auch schon mal die Referenz gelesen, sehe aber nicht
wirklich den Unterschied zwischen den beiden Befehlen.
Wenn du eine PHP-Datei per HTTP von einem Server abrufst, dann wird sie dabei auf diesem Server geparst. Wenn du dagegen serverintern (also mit /www/htdocs/username/drt.php oder so) auf eine Datei zugreifst, wird sie dabei nicht geparst.
Wenn du eine Datei mit readfile() einliest, wird sie nicht von readfile() geparst, sondern wie mit echo() ausgegeben. Wenn du readfile() mit HTTP verwendest, wird die Datei jedoch auf dem Server geparst, von dem du sie abrufst. Rufst du sie serverintern ab, wird sie gar nicht geparst.
Wenn du eine Datei mit include() einliest, dann wird diese Datei so behandelt, als stände sie an dieser Stelle im ausführenden Script. Allerdings musst du in der eingebundenen Datei nochmals <?php und am Ende ?> schreiben. Wenn du include() jedoch mit http://…/dateiname.php verwendest, wird die Datei schon beim Abruf vom Server, wo die Datei liegt, geparst. Dadurch verschwindet sämtlicher PHP-Code aus der Datei (wenn nicht von der PHP-Datei neuer PHP-Code ausgegeben wird), noch bevor sie durch include() ein zweites Mal geparst wird (was logischerweise keine Wirkung mehr zeigt, da nur noch HTML-Code enthalten ist).
Um zu vermeiden, dass die Datei schon beim Abruf vom entfernten Server geparst wird und somit nicht im Urzustand bei inlude() ankommt, muss man sie in .txt umbenennen. Das hat allerdings zur Folge, dass auch ein jeder die Datei ungeparst mit dem Browser aufrufen kann. Auch könntest du auf die Datei per FTP zugreifen.
Also: Mit readfile(‚http://…‘) (include(‚http://…‘) hat meist die selbe Wirkung, aber mehr Rechenaufwand) wird die Datei als eigenständiges Script ausgeführt und die ausgegebenen Daten werden wie mit echo() im aufrufenden Script ausgegeben.
Mit include() wird die Datei als Teil des aufrufenden Scripts ausgeführt, wodurch z.B. Variablen gegenseitig verfügbar sind. Allerdings hat include() beim Zugriff auf auf entfernte PHP-Dateien meist die selbe Wirkung wie readfile().
Wenn du also serverintern auf die Datei zugreifst, musst du include() verwenden, da sonst nichts geparst wird. Wenn du hingegen über HTTP zugreifst, zeigen include() und readfile() die gleiche Wirkung. Eine Ausnahme stellt folgender Code dar:<?php echo "<?php exit; ?>";
?>
In diesem Fall passiert bei readfile(‚http://…‘) nichts, während mit include(‚http://…‘) das Script beendet wird.