Bruno Vilas: angezeigte Seite (Formularergebniss) im Server speichern

ich habe ein recht interessantes Problem zu dem ich auch schon mehrere Threads gelesen habe aber aus keinem wirklich schlau wurde.

Der Anspruch ist aus der Ergebnissseite eines Formulars mit vielen php variablen eine Datei zu generieren die auf dem Server zum späterem aufrufen gespeichert wird. Das speichern eines Dokumentes habe ich hinbekommen, aber es happert noch daran das aktuelle Dokument (this.document oder ähnl) anzusprechen.

Wie ich schon gelesen habe geht das wahrscheinlich nur über den Umweg, die Datei erst in ein string oder Array zu laden und diesen dann abzulegen, aber wie speichere ich die gesammte aktuell angezeigte Seite in eine variable. Alternativ könnte ich den script auch schon im Formular einbinden und das angeforderte Dokument dann speichern.

1. Ansatz

<?php
$src = fopen('http://www.care-concept.de/krankenversicherung/auslandskrankenversicherung/auslandsversicherung_gaesteversicherung_antrag_best.php', 'r');
$dest1 = fopen('antrag.txt', 'w');

echo stream_copy_to_stream($src, $dest1) . " bytes copied to remainder.txt\n";

?>

2. Ansatz

<?php
if (!copy('http://www.care-concept.de/krankenversicherung/auslandskrankenversicherung/auslandsversicherung_gaesteversicherung_antrag_best.php', antrag.'.html')) {
    print ("failed to copy antag...<br>\n");
}
?>

Hoffentlich könnt ihr mir helfen. ich verzweifle nämlich langsam. Danke im Voraus.

  1. hi,

    Wie ich schon gelesen habe geht das wahrscheinlich nur über den Umweg, die Datei erst in ein string oder Array zu laden und diesen dann abzulegen, aber wie speichere ich die gesammte aktuell angezeigte Seite in eine variable.

    Dabei helfen dir vermutlich am ehesten die Funktionen zur Ausgabesteuerung weiter.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. hi,

      Wie ich schon gelesen habe geht das wahrscheinlich nur über den Umweg, die Datei erst in ein string oder Array zu laden und diesen dann abzulegen, aber wie speichere ich die gesammte aktuell angezeigte Seite in eine variable.

      Dabei helfen dir vermutlich am ehesten die Funktionen zur Ausgabesteuerung weiter.

      gruß,
      wahsaga

      Ja, das haben Sie getan, hab zwar noch ein paar kleine schwierigkeiten die Seite dann auch gleichzeitig anzuzeigen aber das speichern klappt schon mal. für die die es auch interessieren könnte hier mal der Schnipsel mit dem ich es gelöst habe.

      // Am anfang der Seite

      <?PHP session_start(); ?>
      <?php ob_start(); ?>

      // Hier steht dann das ganze Formularergebniss das dann in index06b.html gespeichert wird. Leider wird es aber nicht gleichzeitig angezeigt.

      // am ende der Seite

      <?php
         $page = ob_get_contents();
         ob_end_clean();
         $cwd = getcwd();
         $file = "$cwd" .'/'. "indexb06.html";
         @chmod($file,0755);
         $fw = fopen($file, "w");
         fputs($fw,$page, strlen($page));
         fclose($fw);
         die();
      ?>

      1. hi,

        Ja, das haben Sie getan,

        Fein.

        hab zwar noch ein paar kleine schwierigkeiten die Seite dann auch gleichzeitig anzuzeigen aber das speichern klappt schon mal.

        $page = ob_get_contents();

        Hiermit holst du dir den Inhalt des Puffers in eine Variable, um ihn in eine Datei speichern zu können - so weit OK.

        ob_end_clean();

        Hier wirfst du aber jetzt den Inhalt des Puffers einfach weg - nicht gut.
        Nutze lieber ob_end_flush() an dieser Stelle - das beendet die Pufferung auch, sendet aber vorher noch den aktuellen Pufferinhalt an den Client.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. hi,

          Ja, das haben Sie getan,

          Fein.

          hab zwar noch ein paar kleine schwierigkeiten die Seite dann auch gleichzeitig anzuzeigen aber das speichern klappt schon mal.

          $page = ob_get_contents();

          Hiermit holst du dir den Inhalt des Puffers in eine Variable, um ihn in eine Datei speichern zu können - so weit OK.

          ob_end_clean();

          Hier wirfst du aber jetzt den Inhalt des Puffers einfach weg - nicht gut.
          Nutze lieber ob_end_flush() an dieser Stelle - das beendet die Pufferung auch, sendet aber vorher noch den aktuellen Pufferinhalt an den Client.

          gruß,
          wahsaga

          vielen Dank, das mit dem flush statt clean hatte ich auch schon bemerkt. Wichtig war auch das ganze nicht mit die() abzuschließen.

          Hab nun die ideale Lösung zusamenstricken können.

          // am Anfang der Seite

          <?PHP session_start(); ?>
          <?php ob_start(); ?>
          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
          "http://www.w3.org/TR/html4/strict.dtd">

          // gesamte anzuzeigende Seite

          // ende der Seite

          <?php $page = ob_get_contents();
           ob_end_flush();
           $cwd = getcwd();
           $file = "$cwd" .'/'. "dateiname.html"; // ein variabler Dateiname kann an diesr Stelle gewählt werden z.B. Timestamp o. ähnl.
           @chmod($file,0755);
           $fw = fopen($file, "w");
           fputs($fw,$page, strlen($page));
           fclose($fw);
           return; ?>

          | Sokrates |