geloescht_JesterDay Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 Hi, ich hab dazu soweit ich weiss mal irgenwo was gelesen, weiss aber nicht mehr wo und finde dazu nix mehr. also, es geht darum, dass ich per include ein anderes (lokales) Skript einbinde. Das heisst ja, es wird gleich ausgeführt. Gibt es nicht eine Möglichkeit, die Ausgaben des Skripts als Rückgabe zu erhalten und dann irgendwann später das ganze auszugeben? Das Problem ist nämlich, ich baue eine Seite auf und in der Mitte irgendwann soll dann die ausgabe des eingebundenen Skriptes stehen. Ich kann das aber nur hinbekommen, wenn ich erst den oberen Teil ausgeben, dass das Skript include und danach den unteren Teil ausgebe. Damit nehm ich mir aber die Möglichkeit z.B. Header im eingebundenen Skript abzuschicken. Also ich war der Meinung schonmal sowas in der Art gelesen zu haben. Weiss jemand von euch was dazu? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 Hi Vielleicht hilft dir das schon: http://us2.php.net/include/ Example 7.10. include() and the return() statement copy to clipboard return.php <?php $var = 'PHP'; return $var; ?> noreturn.php <?php $var = 'PHP'; ?> testreturns.php <?php $foo = include 'return.php'; echo $foo; // prints 'PHP' $bar = include 'noreturn.php'; echo $bar; // prints 1 ?> [/PHP] Gruß, Markus EDIT: Beim 2. mal durchlesen ist mir aufgefallen, dass du auch dies gemeint haben könntest: [PHP] ob_start(); include( 'abc.php'); $includeAusgaben = ob_get_contents(); ob_end_clean(); EDIT2: Hm da wahr wohl jemand schneller als mein 2. Gedankengang ;-) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Monty82 Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 Theroetisch dürfe sowas funktionieren, wenn ich mich richtig erinnere... Aber probierst Du am besten selbst mal aus ob_start(); include_once("/path/to/file.php"); $incContent = ob_get_contents(); ob_end_clean(); ... echo $incContent; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 8. Juli 2005 Autor Teilen Geschrieben 8. Juli 2005 Danke euch zwei, ich denke das war es Werd es später mal probieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 8. Juli 2005 Autor Teilen Geschrieben 8. Juli 2005 Ja, es geht damit... nur schreibt er ohne die Ausgabe keine SESSION Daten, kann das sein? Das ist natürlich auch schlecht dann Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 Ja, es geht damit... nur schreibt er ohne die Ausgabe keine SESSION Daten, kann das sein? Das ist natürlich auch schlecht dann Eigentlich sollten die Ausgaben mit den Session Daten nichts zu tun haben. Das Scirpt wird ganz normal ausgeführt und die Ausgaben anstatt direkt dem Browser zu senden, werden diese in einem Buffer gehalten.. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Aiun Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 am besten inhalt gar nicht echo'n/print'n, sondern in eine Variable hauen, die dann 1x am Ende des Scripts ausgeführt wird. Wo dein Script "zu ende Geht" solltest du ja fest wissen.... index.php: $var = "<html><body>..."; include "page1.php"; $var .= "</body></html>"; echo $var; page1.php: $var .= "Hello World"; Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 am besten inhalt gar nicht echo'n/print'n, sondern in eine Variable hauen, die dann 1x am Ende des Scripts ausgeführt wird. Wo dein Script "zu ende Geht" solltest du ja fest wissen.... index.php: $var = "<html><body>..."; include "page1.php"; $var .= "</body></html>"; echo $var; page1.php: $var .= "Hello World"; Das halte ich für keine gute Idee. Ich vermute, dass die Geschwindkeit der Ausführung des Scriptes sehr darunter leiden wird, wenn ein String mit ein paar Millionen zeichen gehandelt werden muss... Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 8. Juli 2005 Autor Teilen Geschrieben 8. Juli 2005 am besten inhalt gar nicht echo'n/print'n, sondern in eine Variable hauen, die dann 1x am Ende des Scripts ausgeführt wird. Wo dein Script "zu ende Geht" solltest du ja fest wissen.... Schon klar, es geht aber auch darum , dass das Skript ansich autark sein kann, also auch ohne die Einbindung funktioniert. Das ganze drumrum ist nur ein Rahmen, in dem das dann angezeigt werden kann. Es ist aber zu überlegen, ob es eben nicht anders geht. Urspr. haben wir uns eben damit geholfen, es wie oben beschrieben zu machen (Ausgabe, include, Ausgabe). War vielleicht doch nicht de beste Lösung. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
etreu Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 PHP füllt erst den Buffer und schickt an den Client, wenn der voll ist. Beim ersten senden, sind auch die Session-Informationen enthalten. Wenn vorher dein Buffer nicht voll ist, du welche reinschreibst (in den includes) und dann löscht, dann sind deine Session-Daten eben auch futsch. Daher solltest du den Buffer vor jedem include() leeren mittels flush(). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
kills Geschrieben 8. Juli 2005 Teilen Geschrieben 8. Juli 2005 PHP füllt erst den Buffer und schickt an den Client, wenn der voll ist. Beim ersten senden, sind auch die Session-Informationen enthalten. Wenn vorher dein Buffer nicht voll ist, du welche reinschreibst (in den includes) und dann löscht, dann sind deine Session-Daten eben auch futsch. Daher solltest du den Buffer vor jedem include() leeren mittels flush(). Gute Idee Enrico! Daran hab ich natürlich im ersten Moment nicht gedacht.. Also müsste deine Lösung so aussehen: ob_start(); ob_flush() include( 'abc.php'); $includeAusgaben = ob_get_contents(); ob_end_clean(); [/PHP] oder vielleicht geht das hier auch: [PHP] flush() ob_start(); include( 'abc.php'); $includeAusgaben = ob_get_contents(); ob_end_clean(); Gruß, Markus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geloescht_JesterDay Geschrieben 8. Juli 2005 Autor Teilen Geschrieben 8. Juli 2005 ob_end_clean -- Bereinigt (löscht) den Ausgabe-Puffer und deaktiviert die Ausgabe-Pufferung Es lag nicht an der SESSION, es lieg daran, dass wir Umleitungen (beim Logout in den speziellen Fall) nicht über Header gemacht haben bisher (ging ja nicht), sondern über Javascript. Jetzt kommt das aber zu spät und beim Aufbau der Seite fehlt dann die SESSION schon. Es passt also alles, nur muss halt alles (ein klein wenig) angepasst werden. Bei mir sieht es jetzt so aus: ob_start(); include(...); $page=ob_get_contents(); ob_end_clean(); [/php] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.