Back-Button

Hey Leute,
ich bräuchte ein paar Infos zum Zurück-Button des Browsers. Wenn man diesen Button drückt wird die Seite ja nicht neu geladen, sondern aus dem Cache, oder?

Gibt es irgendeine Möglichkeit mit javascript o.ä. dafür zu sorgen, dass die Seite nicht aus dem Cache geladen wird, sondern dass sie immer nue geladen wird, so dass die PHP scripts auf dem Server auch dann erneut ausgeführt werden?

Oder kann man zumindest mit java script erkennen, ob die Seite aus dem Cache geladen wurde und dann die Ausgabe ändern?

Ich habe auch mal wo gelesen, dass es eine Möglichkeit gibt das was für eine Seite in die Histrory geschrieben wird zu ändern, so dass eine andere Seite geladen wird wenn man den Zurück-Button drückt. Könnt ihr mir dazu was sagen?
Thx,
munich

In den Headbereich:

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">

Danke für die Antwort!
Wird die Seite dann einfach nicht im Cache gespeichert und damit dann nicht aus dem Cache geladen oder kann man dann den zurück button gar nicht verwenden?
thx

no-cache lässt doch hoffentlich auf das erste schließen, oder :neutral_face:

Hmm, irgendwie funktioniert das nicht…
Ich hab folgenden Code:

[code]<?xml version="1.0"?>

New Document
abc
[/code]

Wenn ich nun die Seite lade, dann auf irgendeine andere Seite gehe, nun die Datei auf dem Server ändere, z.B. statt abc schreibe ich xyz und dann den zurück button drücke, bekomme ich trotzdem abc angezeigt, er hat also nicht das neue Dokument geladen!
Wo liegt denn hier der Fehler oder hab ich die Funktion des Codes falsch verstanden?
thx,
munich

warum möchtest du das eigentlich verhindern?

Naja, ich hab ein login script und wenn man sich dort nun abmeldet kann man ja mit dem zurück button zurück gehen. man ist dann natürlich trotzdem nicht wieder eingelogt, aber man kann den alten inhalt noch lesen und das würde ich gerne verhindern.

Dafür würde mir auf die Schnelle nur einfallen, einen (einmaligen!) Reload zu erzwingen.

Beispielsweise könntest Du nach Aufruf der Seite zwei Sekunden warten und dann die Seite neu laden lassen - da dann die Session nicht mehr existiert (Du hattest Dich ja zuvor ausgeloggt), wirst Du (hoffentlich) entweder auf die entsprechende Fehlerseite geleitet oder schlicht einen 401er erhalten.

Nach längerem Überlegen und Suchen: -> tonymarston.net/php-mysql/ba … blues.html

Einfach nachm Einloggen nen link mit weiter und nen meta refresh von 3 Sekunden.
So von wegen:
Sie werden gleich weitergeleitet oder klicken sie Hier.

Wer den Back-Button klickt hat selber schuld. Die meisten normalen User halten sich an so eine Message, weil sie sonst angst haben, dass was kaputt geht^^
Siehe SchülerVZ. Wenn man sich da nicht ausloggt und dann wieder einloggt nachdem alle Cookies gelöscht wurden vom PC kommt eine Meldung "Pöse pöse, du hast dich nicht ausgeloggt."
Was bei mir egal ist, da eh niemand an meinen PC darf und ohne den entsprechenden Cookie nicht eingeloggt ist. Der normale User macht sich natürlich in die Hose und versucht ab den Zeitpunkt sich immer auszuloggen.^^ Aber in der Regel logge ich mich ja eh überall aus, weil es so lustig ist.

PS: Sry fürs abschweifen^^

Hast du die Seite mit den ergänzten Head-Tags schon neu geladen? (Vll ist in deinem Cache noch die Seite ohne Cache-Verbot).

Außerdem ist so ein Cache-Verbot natürlich nur ein “Vorschlag” an den Browser. Kein Browser muss sich daran halten, da das auf Clientseite abläuft.
php-Dateien aktualisiert es bei mir aber irgendwie standardmäßig.

Weil PHP selbstständig no-cache mitschickt :wink:

Du solltest dir auch mal die HTTP Response Header anschauen, mit welchen das Dokument ausgeliefert wird - die haben vor per Meta gemachten Angaben bekanntlich Vorrang.

Der Link sieht sehr interessant aus, ich denke ich werd das erstmal in Ruhe durcharbeiten!
thx,
munich

Soo,
ich hab mir die Page jetzt mal durchgelesen.
Darin ist ja folgender Code angegeben:

// disable any caching by the browser header('Expires: Mon, 14 Oct 2002 05:00:00 GMT'); // Date in the past header('Last-Modified: ' . gmdate("D, d M Y H:i:s") . ' GMT'); // always modified header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP 1.1 header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); // HTTP 1.0

Wo muss ich diesen Code denn in mein HTML oder PHP Dokument einfügen?
thx,
munich

Hmm, ich habs jetzt mal so probiert:

[code]<?php

header(‘Expires: Mon, 14 Oct 2002 05:00:00 GMT’);
header(‘Last-Modified: ’ . gmdate(“D, d M Y H:i:s”) . ’ GMT’);
header(‘Cache-Control: no-store, no-cache, must-revalidate’);
header(‘Cache-Control: post-check=0, pre-check=0’, false);
header(‘Pragma: no-cache’);

echo “<?xml version=\"1.0\"?>\n”;
echo “”;
echo “”;
echo ""
echo “New Document”;
echo “<meta http-equiv=“content-type” content=“text/html; charset=iso-8859-1” />”;
echo “<meta http-equiv=“pragma” content=“no-cache”>”;
echo “<meta http-equiv=“cache-control” content=“no-cache”>”;
echo “”;
echo “”;

echo “abc”;

echo “”;
echo “”;

?>[/code]

Da bekomme ich aber folgenden Fehler:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ‘,’ or ‘;’ in …/back-button/index.php on line 13

Das heißt ja quasi, dass ein ; fehlt, aber ich seh nicht wo…
Hoffe ihr könnt mir weiterhelfen!
Thx,
munich

Ganz am Anfang der Datei (auch keine Leerzeichen, Absätze etc. davor machen)

<?php
//headerangaben
?>

//edit

Liegt vielleicht daran, dass du bei echo immer die gleichen Anführungszeichen nimmst. Probier mal außen ’ zu verwenden.

Hmm ich hab’s jetzt so:

[code]<?php
header(‘Expires: Mon, 14 Oct 2002 05:00:00 GMT’);
header(‘Last-Modified: ’ . gmdate(“D, d M Y H:i:s”) . ’ GMT’);
header(‘Cache-Control: no-store, no-cache, must-revalidate’);
header(‘Cache-Control: post-check=0, pre-check=0’, false);
header(‘Pragma: no-cache’);

echo “<?xml version=\"1.0\"?>\n”;
echo “”;
echo “”;
echo ""
echo “New Document”;
echo “<meta http-equiv=“content-type” content=“text/html; charset=iso-8859-1” />”;
echo “<meta http-equiv=“pragma” content=“no-cache”>”;
echo “<meta http-equiv=“cache-control” content=“no-cache”>”;
echo “”;
echo “”;

echo “abc”;

echo “”;
echo “”;

?>[/code]

Der Fehler kommt aber immernoch…
Habt ihr noch ne Idee?
thx

[code]<?php
header(‘Expires: Mon, 14 Oct 2002 05:00:00 GMT’);
header(‘Last-Modified: ’ . gmdate(“D, d M Y H:i:s”) . ’ GMT’);
header(‘Cache-Control: no-store, no-cache, must-revalidate’);
header(‘Cache-Control: post-check=0, pre-check=0’, false);
header(‘Pragma: no-cache’);
?>

<?xml version=\"1.0\"?> New Document abc [/code]

Ah, hatt vergessen zwei Anführungszeichen zu escapen…
Leider funktioniert es trotzdem nicht. Er läd es trotzdem aus dem Cache.
Im iexplorer funktionierts, aber in firefox leider nicht… Gibt’s noch ne Lösung, die in allen Browsern funktionieren sollte?
Noch ne Idee?
Thx,
munich

Es einfach lassen :astonished: Warum brauchst du das? :ps: