Chris: abgearbeitete PHP-Seite in eine Variable speichern

Hallo PHP-Profis!

Habe folgendes Problem.

Eine abgearbeitete Php- seite (also der Html- Source), die verschiedene Variablen von der Vorgängerseite benötigt, um das Ergebnis richtig darzustellen, soll einerseits als Html-mail versendet werden können, andererseits sollte auch die Erstellung eines PDF möglich sein.

Deshalb möchte ich das ergebnis der php-seite in eine Variable speichern, um den Inhalt der Seite auf der nächsten weiterverwenden zu können.

Wie kann ich das anstellen? Ist das überhaupt möglich?

Habe es auf eine andere Art probiert und zwar mit Output-Buffering.
<?php
ob_start(); //startet Buffer
include("anzeigen.php"); //anzeigen.php ist jetzt im Buffer
$var=ob_get_contents(); //Buffer wird in $var geschrieben
ob_end_clean(); //Buffer wird gelöscht
echo $var; //$var wird weiter verwendet
?>

Dies funktioniert allerdings nicht, da benötigte Variablenwerte nicht zur Verfügung stehen.

Bitte um Hilfe!!

Mfg Chris

  1. Hallo PHP-Profis!

    ich nicht! :-)

    Habe folgendes Problem.

    Eine abgearbeitete Php- seite (also der Html- Source), die verschiedene Variablen von der Vorgängerseite benötigt, um das Ergebnis richtig darzustellen, soll einerseits als Html-mail versendet werden können, andererseits sollte auch die Erstellung eines PDF möglich sein.

    Deshalb möchte ich das ergebnis der php-seite in eine Variable speichern, um den Inhalt der Seite auf der nächsten weiterverwenden zu können.

    Wie kann ich das anstellen? Ist das überhaupt möglich?

    also ich habe es so gemacht, dass ich anstatt "echo" überall "$variable =" beim nächsten echo dann "$variable .=" gesetzt habe...am ende dann echo $variable und die variable in eine session gespeichert...nächste seite session_variable ausgegeben...

    ps: was nutzt du für´s pdf ? ich habe ezpdf benutzt, einige hacken, deshalb wäre mir u.u. eine andere class wilkommen

    grüße
    heiko

    1. Hallo Heiko, hallo Sven!

      Ich wollte eigentlich nur den Source-Code (html), der von der php-datei erstellt und im Browser angezeigt wird, in einer Variable speichern.

      Ausgabe z.B. über "echo $content;"

      Es soll bei der Ausgabe von $content die Seite so aussehen, wie sie durch php zuvor generiert worden ist.

      Wenn möglich, will ich nicht all die Variablen auf eine neue Seite übertragen und dann mit

      <?php
      ob_start(); //startet Buffer
      include("anzeigen.php"); //anzeigen.php ist jetzt im Buffer
      $var=ob_get_contents(); //Buffer wird in $var geschrieben
      ob_end_clean(); //Buffer wird gelöscht
      echo $var; //$var wird weiter verwendet
      ?>

      diesem Code arbeiten.

      Gibts da eine Möglichkeit?

      Danke für eure rasche Antwort!

      mfg chris

      1. Hallo Heiko, hallo Sven!

        Ich wollte eigentlich nur den Source-Code (html), der von der php-datei erstellt und im Browser angezeigt wird, in einer Variable speichern.

        Ausgabe z.B. über "echo $content;"

        ja im prinzip genauso, wie zuvor beschrieben habe!
        im moment gibst du den inhalt ja wohl über echo"<table><tr>.."; etc. aus?

        stattdessen schreibst du $Content = "<table><tr>.."; //Kommentar php etc... und dann wieder $Content.= "</Table>";

        zum schluß kannst du dann content ausgeben oder damit machen, was du willst...

      2. Moin!

        Ich wollte eigentlich nur den Source-Code (html), der von der php-datei erstellt und im Browser angezeigt wird, in einer Variable speichern.

        Das machst du sinnvollerweise dann auf genau dieser Seite. Dazu sind die Output-Buffer-Funktionen gut geeignet. Das Resultat gibst du sowohl an den Browser aus, speicherst es aber auch in einer temporären Datei, und übergibst diesen Dateinamen dann deiner zweiten Seite, die den Sourcecode wieder einliest.

        Alternativ kannst du natürlich auch fopen("http://...") machen, sofern du auf deiner zweiten Seite noch weißt, welche GET-Parameter deine erste Seite erzeugt haben. Bedenke, dass du damit den Webserver direkt kontaktierst, was möglicherweise doppelt Traffic verursacht (je nachdem, wie der Provider abrechnet). Wenn du die erste Seite mit einem POST-Formuler erzeugt hast, kannst du fopen() nicht nehmen und dieser Ansatz würde zu kompliziert. Ebenso funktioniert fopen() nicht zwingend überall, das Öffnen von HTTP-URLs kann deaktiviert sein.

        - Sven Rautenberg

        --
        "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)
  2. Moin!

    Deshalb möchte ich das ergebnis der php-seite in eine Variable speichern, um den Inhalt der Seite auf der nächsten weiterverwenden zu können.

    Habe es auf eine andere Art probiert und zwar mit Output-Buffering.
    Dies funktioniert allerdings nicht, da benötigte Variablenwerte nicht zur Verfügung stehen.

    Logisch. Damit kriegst du den von der Seite ausgegebenen HTML-Code eingefangen, nicht aber die zugrundeliegenden Variablen oder irgendeinen PHP-Quelltext.

    Wenn du Daten vom ersten Skript in einem zweiten Skript brauchst, mußt du die anders übertragen. Entweder als URL-Parameter (indem du auf Seite 1 entsprechende Links schreibst), du kannst auch Cookies setzen (die könnten aber abgelehnt werden), und du kannst es mit Sessions versuchen. Selbstverständlich geht auch ein Formular, welches nur aus Hidden-Feldern besteht.

    Jede andere Form der Datenübertragung funktioniert nicht.

    - Sven Rautenberg

    --
    "Habe den Mut, dich deines eigenen Verstandes zu bedienen!" (Immanuel Kant)