Hallo Claus,
Wird dabei der HTML-Teil ausgeklammert oder auch abgearbeitet?
Meiner Meinung nach wird der nicht mehr abgearbeitet. Denn die Formularfelder bleiben gefüllt.
wenn im PHP-Teil ausdrücklich eine Anweisung steht, die das Script beendet (z.B. ein exit), dann hast du recht. Wenn nicht, wird es interessant: Wie übermittelst du die Datei zum Download an den Client?
Direkt durch das PHP-Script mit readfile() und vorher dem korrekten Content-Type- und dem zur Dateigröße passenden Content-Length-Header? Dann würde alles, was nach dem PHP-Block (also nach dem ?>) noch folgt, ebenfalls übertragen, aber vom Client ignoriert, weil es über die angekündigte Content-Length hinausgeht.
Oder durch ein Redirect (301 oder 302) auf die angeforderte Datei? Dann hättest du zwar recht, aber der eigentliche Download erfolgt dann, indem der Client dem Redirect folgt und einen zweiten HTTP-Request absetzt, der die Ressource direkt abruft.
Ich hatte mal nach dem Senden der Datei zum Testen echos eingebaut, die wurden nicht mehr ausgegeben. Allerdings ein nachfolgender Redirect wurde ausgeführt, jedoch unterbleibt dann das Senden der Datei.
Das ist allerdings sehr mysteriös. Nicht das übliche Verhalten. Es deutet darauf hin, dass du sehr ungewöhnliche Methoden verwendest, die ich mir im Moment nicht vorstellen kann - vielleicht Output Buffering?
Und ja, wenn der Client sich entschließt, dem Redirect zu folgen, ignoriert er den eigentlichen Inhalt (den Response Body) der HTTP-Antwort. Das ist korrekt so.
So ein HTTP-Request kann wohl nicht zwei Sachen gleichzeitig senden
Richtig, so funktioniert HTTP: Eine Anfrage, eine Antwort. Je nachdem, wie die Antwort ausfällt, kann sie den Client dazu bringen, eine weitere Anfrage zu senden - etwa beim Redirect.
Live long and pros healthy,
Martin
Klein φ macht auch Mist.