Auge: Affenformular: Ich bekomme keine Weiterleitung hin

Beitrag lesen

Hallo

Vor der Umleitung darf keine Ausgabe an den Browser geschehen.
Es darf nichts vor "<?PHP" stehen (nichtmal ein Leerzeichen), dann
sollte die Weiterleitung funktionieren, denn der Header darf nur vor dem Content der Seite geschickt werden.

Hm... wie bekomme ich dann eine Weiterleitung hin, wenn ich das auf diesem Weg nicht machen darf?

Du darfst das schon, aber nicht mehr zu diesem Zeitpunkt, oder besser gesagt, nicht mehr an dieser Stelle im Skript. Schreibe dein Skript so um, dass es dem EVA-Prinzip folgt. Kurz, als Vorschau: EVA heißt Eingabe, Verarbeitung, Ausgabe. Diese drei Schritte werden strikt nacheinander ausgeführt.

Für dein Skript hieße das, bei Aufruf der Seite als erstes zu prüfen, ob Daten aus dem Formular vorliegen, wenn nicht, wird das leere Formular zur Ausgabe vorbereitet, wenn doch, werden sie dem Skriptteil übergeben, der sie auswertet. Wird bei der Auswertung ein Fehler festgestellt, wird das Formular, mit den übergebenen, gültigen Werten vorbelegt, zur Ausgabe vorbereitet.

Wenn kein Fehler auftritt, werden die Daten versandt, gespeichert oder was auch immer. Dann wird die Weiterleitung angestoßen.

Das alles passiert, _bevor_ der Skriptteil kommt, in dem die HTML-Seite zusammengebaut und schließlich ausgegeben wird. Kein Leerzeichen, kein Zeilenumbruch oder was auch immer, darf bis zu diesem Zeitpunkt an den Browser ausgegeben werden. Dann klappt es auch mit der Weiterleitung per header.

Ach übrigens, in header("Location: ..."); _muss_ eine vollständige URL notiert werden. Also mit Protokoll (normalerweise "http://") und Domainname.

header("Location: ziel.php"); # falsch  
header("Location: http://example.com/pfad/zur/ziel.php"); # richtig

Tschö, Auge

--
Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
(Victor Hugo)
Veranstaltungsdatenbank Vdb 0.2