Hansjoerg: Browser Cache nie leer, PHP Formular

Hallo zusammen,
ich habe ein kleines Phänomen und niemand konnte mir bisher weiterhelfen, im Gegenteil es gibt wohl noch mehr Leute die ähnliche Probleme haben.
-----------------------

Wenn ich ein PHP / HTML Formular absende und mit dem Browser zurückgehe sind alle Daten immer noch sichtbar.
Ich habe daher folgenden Code eingefügt.
---------
header("Expires: Sat, 05 Aug 2000 22:27:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", "private");
-----------

Ich möchte gerne erreichen, dass eine neue Seite geladen wird mit leeren Formularfeldern und einer neuen Auftragsnummer.

Bei einem WAMP mit Apache 1.2.26 und neuestem PHP 4.2.1 funktioniert alles wunderbar, wenn man auf "Back" klickt sind alle Daten weg.

Jetzt habe ich nochmals einen anderen WAMP mit genau der gleichen Insta, und hier bleiben alle Daten im browser.

Der einzige Unterschied ist, dass hier der IE6.0 läuft und auf dem anderen PC IE 5.5

Ich habe jetzt sogar den neuesten Mozilla und Netscape 6.2 inst. Die zeigen gleiches Verhalten.
Nur mit Netscape 4,7 sind die Formulardaten nach dem Absenden leer ?

Was gibt es denn noch zum einstellen oder kontrollieren?
vielen Dank
Hansjörg

  1. Moin!

    Wenn ich ein PHP / HTML Formular absende und mit dem Browser zurückgehe sind alle Daten immer noch sichtbar.

    Das ist als Standard so festgelegt. Die History-Funktionen sollen Seiten so anzeigen, wie der User sie beim Verlassen zuletzt gesehen hat. Das ist für ausgefüllte Formulare mit sensitiven Daten möglicherweise doof, aber erstmal so nicht zu ändern. Du mußt jedenfalls davon ausgehen, daß die Seite so angezeigt wird, wie sie verlassen wurde.

    Dagegen hilft nur, die History des Browsers/Browserfensters zu löschen - durch Fensterschließen oder Überschreiben des History-Eintrags.

    Dummerweise kannst du im Browser selbst nur mit Javascript arbeiten - und das kann abgeschaltet sein. Serverseitig kannst du garnichts machen, weil es sich hierbei um eine reine Browserfunktion handelt, die nicht auf den Server zurückgreift (wenn einige Browser das dennoch tun, sind sie kaputt und handeln dem Standard zuwider!).

    - Sven Rautenberg

  2. Hallo,

    ich habe ein kleines Phänomen und niemand konnte mir bisher weiterhelfen, im Gegenteil es gibt wohl noch mehr Leute die ähnliche Probleme haben.

    ...

    Wenn ich ein PHP / HTML Formular absende und mit dem Browser zurückgehe sind alle Daten immer noch sichtbar.

    Das ist nicht unbedingt ein Phaenomen, sondern eigentlich ganz logisch. Beim click auf den Back-Button wird die letzte Seite ja nicht neu geladen. D.h sie erscheint in dem Zustand in dem Du sie verlassen hast.
    Evtl. kannst Du mit location.replace was erreichen:
    http://selfhtml.teamone.de/javascript/objekte/location.htm#replace

    Gruss, Mel

  3. Wenn ich ein PHP / HTML Formular absende und mit dem Browser zurückgehe sind alle Daten immer noch sichtbar.
    Ich habe daher folgenden Code eingefügt.

    header("Expires: Sat, 05 Aug 2000 22:27:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    header("Cache-Control: no-cache, must-revalidate");
    header("Pragma: no-cache");
    header("Cache-Control: post-check=0, pre-check=0", "private");

    Ich möchte gerne erreichen, dass eine neue Seite geladen wird mit leeren Formularfeldern und einer neuen Auftragsnummer.

    Hallo Hansjörg,

    mit dem Cache hat das meines Erachtens nichts zu tun; im Cache wird ja nur die Seite an sich gespeichert, nicht jedoch die Daten, die Du in das Formular einträgst. Daher werden Deine Header-Einträge da nicht weiterhelfen.

    Auch die Serverkonfiguration ist unerheblich, da es sich hierbei um ein rein clientseitige Browserverhalten handelt.

    Die einzige Möglichkeit, die mir einfällt, ist, per Javascript beim Laden der Formularseite alle Formularfelder auf value = "" zu setzen bzw. das Formular zu resetten.

    Also z.B. onLoad="document.form.textfield.value=''" oder onLoad="document.form.reset()" (das ganze natürlich an Dein Formular angepasst).

    Viele Grüße, Gordon

    1. Hallo Gordon,
      danke dir für deine Hilfe,

      das wäre auch eine Möglichkeit.
      Ich frage mich nur, warum es bisher und auf einem anderen PC mit IE 5.5 noch immer funktioniert.??

      Wenn ich ein PHP / HTML Formular absende und mit dem Browser zurückgehe sind alle Daten immer noch sichtbar.
      Ich habe daher folgenden Code eingefügt.

      header("Expires: Sat, 05 Aug 2000 22:27:00 GMT");
      header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
      header("Cache-Control: no-cache, must-revalidate");
      header("Pragma: no-cache");
      header("Cache-Control: post-check=0, pre-check=0", "private");

      Ich möchte gerne erreichen, dass eine neue Seite geladen wird mit leeren Formularfeldern und einer neuen Auftragsnummer.

      Hallo Hansjörg,

      mit dem Cache hat das meines Erachtens nichts zu tun; im Cache wird ja nur die Seite an sich gespeichert, nicht jedoch die Daten, die Du in das Formular einträgst. Daher werden Deine Header-Einträge da nicht weiterhelfen.

      Auch die Serverkonfiguration ist unerheblich, da es sich hierbei um ein rein clientseitige Browserverhalten handelt.

      Die einzige Möglichkeit, die mir einfällt, ist, per Javascript beim Laden der Formularseite alle Formularfelder auf value = "" zu setzen bzw. das Formular zu resetten.

      Also z.B. onLoad="document.form.textfield.value=''" oder onLoad="document.form.reset()" (das ganze natürlich an Dein Formular angepasst).

      Viele Grüße, Gordon

      1. Ich frage mich nur, warum es bisher und auf einem anderen PC mit IE 5.5 noch immer funktioniert.??

        Hi nochmal,

        die unterschiedlichen Browserversionen haben eben unterschiedliche Launen - oder sagen wir - Eigenschaften.

        Ich habe beispielsweise die Erfahrung gemacht, dass der IE 5.0 Formulardaten gar nicht erst sendet, wenn man das Formular per onClick abschickt und gleichzeitig einen anderen Link in einem neuen Fenster öffnet. Da musste ich extra 'ne nervige Browserweiche schreiben, um genau diese IE-Version abzufangen. Da lässt sich Dein Problem ja noch etwas einfacher lösen ;-)

        Viele Grüße, Gordon