PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verhindern, dass beim Klick auf Zurück aus dem Cache geladen wird


Gast
2009-01-17, 22:49:19
Hi,
ich habe ein PHP Skript, dass über mehrere Seiten Eingaben verarbeitet. Am Ende werden alle übermittelt und gut ist. Ich hab allerdings das Problem, dass man, wenn man im Browser auf Zurück klickt, die vorherige Seite wieder angezeigt bekommt. Über Sessions kann ich zwar verhindern, dass das ganze einfach nochmal übermittelt wird, aber lieber wäre mir noch, es würde beim Klick auf Zurück gleich die erste Seite des Formulars angezeigt.
Der Haken an der Sache ist aber wohl, dass wenn ich auf Zurück klicke, gar keine Kommunikation mit dem Server stattfindet, sondern die Seite inkl. Eingaben aus dem Cache geladen wird.
Gibt es vielleicht irgendein HTML-Header Zusatz, mit dem ich deklarieren kann, dass die Seite nur temporär gültig ist oder sowas?

Danke für Tipps!

beos
2009-01-17, 23:11:42
Hallo,

mir fallen 2 Möglichkeiten ein:

1. per Metatag ein Neuladen der Orginal Adresse erzwingen - also Browser und Proxy Caches ignorieren:


<head>
<meta http-equiv="expires" content="0">
<!-- ... andere Angaben im Dateikopf ... -->
</head>


2. Den Zurück Button mit einer Javascript Funktion ausstatten , die dann die richtige Seite lädt.

Gast
2009-01-17, 23:46:04
Danke dir für deine Antwort :)

Javascript wäre eher ne Notlösung, die Seite soll im Prinzip mit reinem HTML auskommen.

Der Metatag sieht eigentlich genau aus wie das was ich suche. Aber irgendwie funktioniert es zumindest im Firefox nicht richtig: Wenn ich auf zurück klicke, wird mir doch wieder die vorherige Seite angezeigt.

beos
2009-01-17, 23:49:29
Danke dir für deine Antwort :)

Javascript wäre eher ne Notlösung, die Seite soll im Prinzip mit reinem HTML auskommen.

Der Metatag sieht eigentlich genau aus wie das was ich suche. Aber irgendwie funktioniert es zumindest im Firefox nicht richtig: Wenn ich auf zurück klicke, wird mir doch wieder die vorherige Seite angezeigt.

Aber sehr gerne :)

Das mit diesem Metatag habe ich persönlich noch nicht ausprobiert - schau doch mal bei selfhtml vorbei - vielleicht muss man noch was beachten.

Datei von Originaladresse laden:

http://de.selfhtml.org/html/kopfdaten/meta.htm

Gast
2009-01-17, 23:56:49
Ich hab mal etwas gegoogelt und noch zwei ähnliches bewirkende Meta-Tags gefunden:
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">

Ärgerlicherweise bewirken die aber auch nichts. Was aber komisch ist:
Mein Formular besteht aus 2 Seiten, auf der ersten werden Formulardaten angegeben, die auf die zweite weitergereicht werden mittels hidden Inputs. Auf Seite 2 kann man dann noch Dateien zum Upload auswählen. Im nächsten Schritt werden Sie dann abgesendet und auf der letzten Seite wird die mysql-insert-id des auto_increment index der Tabelle angezeigt.

Wenn ich jetzt nach dem Senden auf zurück klicke, wird die vorherige Seite angezeigt. Klicke ich dann auf vorwärts, wird die ID des letzten Aufrufs angezeigt. Schaue ich dann aber in die Datenbank, sehe ich das doch ein Datensatz eingefügt wurde.

Wenn er den Webserver nochmal aufruft, wieso zeigt er dann trotzdem noch die alte Antwort an?

PatkIllA
2009-01-18, 00:00:36
2. Den Zurück Button mit einer Javascript Funktion ausstatten , die dann die richtige Seite lädt.Wie soll das denn gehen?

@Topic
versuchs doch mal mit CacheControlim HTTP Header

http://en.wikipedia.org/wiki/List_of_HTTP_headers

Gast
2009-01-18, 00:03:15
Da passiert leider genau das gleiche.
Der Internet Explorer reagiert noch anders darauf und zeigt einfach folgendes an:

Die Webseite ist abgelaufen.

Wahrscheinlichste Ursache:
Die lokale Kopie der Webseite ist nicht mehr aktuell. Die Website erfordert daher, dass Sie sie erneut herunterladen.

beos
2009-01-18, 00:33:36
Wie soll das denn gehen?

@Topic
versuchs doch mal mit CacheControlim HTTP Header

http://en.wikipedia.org/wiki/List_of_HTTP_headers

Hmmm - ich dachte mir , man könnte die Funktion history.back() auch mit IF abfragen - das scheint aber nicht zu klappen :redface:

PatkIllA
2009-01-18, 00:41:47
dann mach doch mal sessions an, lass dir den HTTP Header ausgeben und schau nach was da drin steht.

PatkIllA
2009-01-18, 09:58:59
http://www.webconfs.com/http-header-check.php
da ist zum Beispiel ein Tool. Ich habe gerade mal ein paar Foren eingegeben und das scheint nicht mal bei allen PHP-Installationen gleich zu sein. (Oder die Seiten verwenden eigene Sessionimplementierungen).

Berni
2009-01-18, 13:21:11
Um die Header anzusehen gibts doch schöne Browserplugins: ieHTTPHeaders für den IE oder LiveHttpHeaders für den Firefox. Noch genauer (mit Änderungsmöglichkeit der eigenen gesendeten Requests) gehts mit den jeweiligen Pendants Fiddler2 und Tamper Data.