Hallo Rouven,
(ich kenn mich da nicht so aus, ich dachte der Standard-Location-Header würde es schon tun, oder ist das ein Problem mit dem POST-Formular?)
Jain, es ist kein wirkliches Problem in heutigen Browsern. Das eigentliche Problem ist die Tatsache, dass 302 nicht explizit sagt, dass die Methode, mit der auf die darauffolgende Resource zugegriffen werden muss, GET sein muss. Ich habe zwar noch keinen Browser erlebt, der es anders macht, allerdings ist das Verhalten an dieser Stelle einfach nicht definiert.
In HTTP/1.1 wurden die Statuscodes 303 und 307 eingeführt, um diese Unklarheit zu beseitigen. 303 sagt: der nächste Request muss GET sein. 307 sagt: derr nächste Request muss POST sein.
Daher: Für HTTP/1.1-Clients einen 303er senden, dann ist man auf der sicheren Seite, für HTTP/1.0-Clients einen 302er senden, da diese 303 noch nicht kennen (können). Der 302er wird von PHP bei Location automatisch generiert, falls noch kein 30x-Header gesendet wurde.
Viele Grüße,
Christian