dedlfix: POST Funktion beim "seite zurück" ausstellen

Beitrag lesen

echo $begrüßung;

Du kannst die Response auf den Post mit einem Redirection-Header belegen und die eigentliche Antwort dann dann nach dem Request durch Redirect aus der Session kramen.
Hast Du ein Beispiel parat, mit dem sich die Alertbox des erneuten Absendes serverseitig vermeiden läßt?

Nein, wenn der Browser erneut zu POSTen gedenkt, dann fragt er dabei nach. Ziel ist es jedoch, den ursprünglichen POST durch einen Redirect auf ein GET aus der History fern zu halten. Eine Session ist dabei nicht zwingend erforderlich, wenn man keine Daten benötigt, die sich nur aus dem POST-Request ergeben.

Beispielsweise hat man ein Formular zum Datensatz mit der ID foo auf einer Formularseite ausgegeben (GET edit.php?id=foo). Die geänderten Daten sendet man per POST-Request an den Server (POST edit.php?id=foo - gleiche URL, wegen Affenformular). Der schreibt sie weg und antwortet mit einem Redirect auf die Listendarstellung (von einer Auswahl) aller Datensätze (GET list.php) oder auch wieder dem Formular (GET edit.php?id=foo), je nachdem wie man seinen Anwendung gestaltet. Eine "alles bestens, keine Fehler"-Meldung halte ich im Gutfall für verzichtbar.

Problematisch wird es nur, wenn das Affenformular aufgrund von fehlerhaften Eingaben eine oder mehrere Runden drehen muss. Dann hat man zwar den fehlerfreien POST durch den Redirect eliminiert, die fehlerhaften Runden bleiben aber in der History erhalten. Wenn man die jedes Mal mit einem GET-Redirect abfangen möchte, muss man sich was ausdenken, wie man die Fehlermeldungen in die Antwort auf den Redirect-Request bringt. Eine Session wäre eine Möglichkeit, die Meldung in der URL zu übertragen eine weitere, wenn auch keine sehr schöne.

Und dabei geht dann die Info für den Browser verloren, daß er Daten gepostet hat?

Ja, die ursprünglichen Ziele eines mit einem normalen HTTP-Redirects beantworteten Requests landen nicht in der History. Nur HTML-Meta-Element-Redirects landen da.

(Mal von der häßlichen SID im URL oder ggf. eigentlich unnötiger Nachfrage "Wollen Sie einen Cookie erlauben?" mal abgesehen.)

Wenn man eine Daten verarbeitende Application vorliegen hat, die über "Gästebuch" hinausgeht, kann man schon mal eine Session-Akzeptanz auch bei Web-Ästheten einfordern.

echo "$verabschiedung $name";