Zum Inhalt springen

PHP - Script ausführen ohne Ausgabe


Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ;-)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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..

Link zu diesem Kommentar
Auf anderen Seiten teilen

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";

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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().

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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]

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...