Header
Dominik
- php
Hi Leute,
ich möchte, dass ich nach einem Post bei einem Reload nicht gefragt werde, ob er die Daten erneut senden soll.
So weit ich weiß kann man das in php mit der Funktion header() setzten.
Wie funktioniert das genau? Und wo muss dieser Befehl ausgeführt werden?
Vielen Dank für euere Hilfe
Grüße
Hallo,
ich möchte, dass ich nach einem Post bei einem Reload nicht gefragt werde, ob er die Daten erneut senden soll.
So weit ich weiß kann man das in php mit der Funktion header() setzten.
Ich dachte, dass sei Sache des Browsers. Der weiß doch, dass er per Post Daten mitgeschickt hat und muss dich beim Reload fragen, ob er das nochmal tun soll. Der Server ist in dem Moment ja gar nicht am Zuge.
Gruß
jobo
Sicherlich ist es Sache des Browsers, aber ich kann dem Browser im Header ja sagen, was er zu tun hat bei reload.
Ich weiß nur nicht die genaue Syntax; man muss das aber irgendwie über den Status 201 hinbekommen.
Grüße
Ich habe das von "Michael" bereits gelesen, aber da wird die Syntax ja nicht erklärt.
Grüße
Hallo,
Ich habe das von "Michael" bereits gelesen, aber da wird die Syntax ja nicht erklärt.
Ich dachte sota wäre, nach erfolgreicher Validierung per header redirecten auf eine weitere Seite.
Gruß
jobo
Hi, das ist aber eine unschöne Lösung den header(Location:) zu ändern um den reload bug wegzubekommen und wenn man in der History zurück geht funkt es auch schon wieder nicht mehr.
Grüße
Hallo,
Hi, das ist aber eine unschöne Lösung den header(Location:) zu ändern um den reload bug wegzubekommen und wenn man in der History zurück geht funkt es auch schon wieder nicht mehr.
State of the art, dachte ich. S.a. framework.zend.com und deren Form-Klasse.
Mein gefährliches Halbwissen fragt mich, warum sich der Browser vom Server sagen lassen soll, wann er beim Reload wie zu verfahren hat. Ein Reload bei einem Post-Request beinhaltet doch eben genau das. Die Frage ist doch, macht es denn überhaupt Sinn, es so nicht zu machen?
Gruß
jobo
Moin!
Mein gefährliches Halbwissen fragt mich, warum sich der Browser vom Server sagen lassen soll, wann er beim Reload wie zu verfahren hat. Ein Reload bei einem Post-Request beinhaltet doch eben genau das. Die Frage ist doch, macht es denn überhaupt Sinn, es so nicht zu machen?
Ein Reload ist die Wiederholung des Requests, der dazu geführt hat, dass die gerade angezeigte Seite geladen wurde.
Wenn ein POST-Formular abgeschickt wurde, ist die sichtbare Ergebnisseite das Ergebnis dieses POST-Requests. Ein Reload wiederholt diesen POST-Request. Weil aber POST-Requests potentiell dazu benutzt werden, Daten zu manipulieren (das ist deren Aufgabe im HTTP-Universum, andernfalls würde man GET nehmen), fragen die Browser halt nach, ob man den Request wirklich wiederholen will.
Daran ist jeweils nicht wirklich viel schlimmes, und es ist auch keinesfalls ein Bug. Es ist das normale Verhalten (Stand: heute).
Und ich vermute, dass sich daran auch kaum etwas ändern wird, weil die übliche Vorgehensweise dagegen ist, die Ergebnisseite des POST-Requests als Redirect zu formulieren, so dass der Browser direkt danach einen GET-Request auf eine harmlose URL ausführt, die dann problemlos so oft reloaded werden darf, wie man will.
- Sven Rautenberg
Hi,
Sicherlich ist es Sache des Browsers, aber ich kann dem Browser im Header ja sagen, was er zu tun hat bei reload.
nein, kannst Du nicht, dass weiß er nämlich selbst sehr genau: Er muss den Request wiederholen, der zu der Seite geführt hat, welche im Browserfenster sichtbar ist. Und anders als im deutschen Fernsehen werden bei Wiederholungen hier nicht die besten Szenen rausgeschnitten.
Ich weiß nur nicht die genaue Syntax; man muss das aber irgendwie über den Status 201 hinbekommen.
Dafür, dass Du es nicht so genau weißt, weißt Du es aber ziemlich genau.
Cheatah
So weit ich weiß kann man das in php mit der Funktion header() setzten.
Das Thema hatten wir erst.
Schau doch mal hier nach:
Hallo,
ich möchte, dass ich nach einem Post bei einem Reload nicht gefragt werde, ob er die Daten erneut senden soll.
und wir möchten, dass Doppelpostings vermieden werden, erst recht unter wechselnden Nicknames, um die Drängelei zu verschleiern.
Ciao,
Martin