Neuen Gästebucheintrag direkt anzeigen

jesusShuttlesworth

Grünschnabel
Hallo Leute

Ich habe auf einer Homepage ein Gästebuch, mit PHP und MySQL umgesetzt. Auf einer Seite gästebuch.php werden die Inhalte der Datenbank ausgelesen. Über einen Link gelangt man zur eintragen.html, auf der sich ein Formular befindet. Über einen Submit Button und der Post-Methode gelangt man zur ausführen.php, welche die Daten in die Tabelle schreibt. Wenn das Eintragen erfolgreich war, wird einem der Text "Vielen Dank für ihren Eintrag, Sie werden in wenigen Sekunden weitergeleitet..." ausgegeben.
Die Weiterleitung erfolgt mit

HTML:
<meta http-equiv="refresh" content="5; URL=gästebuch.php">


Soweit so gut, funktioniert auch bei mir lokal auf Xampp, man kann seinen neuen Eintrag sofort sehen.
In meiner Domain wird allerdings der Eintrag nach der Weiterleitung nicht angezeigt. Erst nachdem ich die Seite gästebuch.php neu lade, ist der Eintrag zu sehen. Ich vermute dass der Browser die Seite aus dem Cache lädt.
Mit
PHP:
header('Location: gästebuch.php');
hab ich's auch schon probiert, Meta tags wie
HTML:
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="1" />

stehen auch in der gästebuch.php im Header.
Weiss hier jemand Rat was ich schreiben kann, um auf die "neue" Seite mit dem neuen Eintrag weitergeleitet zu werden? Oder ob das Problem eine andere Ursache haben könnte?

Grüße
 
Bau die ausführen.php einfach in die gästebuch.php ein?
PHP:
if(isset($_POST['submit']))
{
   //ausführen.php
}

Das setzt du an den Seitenanfang. Darunter der vorhandene Code. So wird zuerst der Eintrag getätigt und anschließend direkt alles ausgegeben.

gruß
 
Häng einfach an deine Indexseite wo deine Einträge gezeigt werden in der Url den Timestamp:
PHP:
header('Location: gästebuch.php?'.time());

Diese Seite mit den Parametern kann der Browser nicht Cache haben und somit ersparst du dir die Arbeit Caches usw. zu setzen bzw. zu korrigieren
 
Danke für die tollen Lösungsansätze! Mit dem timestampdurfte es am schnellsten gehen, probiere ich heute abend mal aus wenn der FTP-Dienst dann endlich wieder erreichbar ist.... oder alles in ein Programm, geht wohl auch... In AJAX bin ich mich gerade am reinarbeiten, das scheint die modernste Lösung zu sein :-)
 
Hi Leute,
mit dem time() paramter in der header anweisung hat's komischer Weise nicht geklappt, auch sämtliche andere no-cache Anweisungen werden ignoriert...
Ich habe das Problem dafür mit einer .htacces Datei lösen können und wollte die Lösung hier posten, falls jemand das gleiche Problem hat. Einfach eine Datei als .htaccess speichern und im root-Verzeichnis der Domain hochladen. Diese Datei beinhaltet folgenden Code:

<FilesMatch "\.(html|htm|js|css|php)$">
FileETag None
<IfModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</IfModule>
</FilesMatch>

Funktioniert bei mir einwandfrei. Danke nochmals für eure Vorschläge.
 
Zurück