2016-05-04 8 views
1

Ich mache eine Website, die eine ganze Reihe von PHP tut Umleitungen auf verschiedene Szenarien abhängig .. Wie so ...Wird PHP nach einer PHP-Weiterleitung weiterhin ausgeführt?

header("Location: somesite.com/redirectedpage.php"); 

Ich bin nur ein festes Verständnis dafür, wie die Umleitung funktioniert zu bekommen versuchen, für Wertpapiere willen. Meine Frage ist, wird PHP weiterhin nach diesem Header-Aufruf ausgeführt?

Zum Beispiel ... Würde das Echo in diesem Code noch ausgeführt werden?

Wenn ja ... Würde ich die Redirect-Funktion zu diesem ändern ... machen Sie das Echo nicht ausführen, aber immer noch umleiten?

Ich versuche nur, ein sicheres Verständnis dafür zu bekommen, wie die Umleitung funktioniert, aus Sicherheitsgründen.

+4

Alle 'header()' ist __set__ die Header bereit für, wenn die Antwort an den Browser gesendet wird, sendet es keine Antwort an den Browser, so dass Code weiterhin nach 'header()' ausgeführt wird call, wenn Sie die Ausführung nicht explizit beenden –

+0

Sie möchten nach einer Weiterleitung wahrscheinlich nicht hart beenden. Möglicherweise müssen Sie eine andere Verarbeitung vornehmen. – tadman

+2

Sie können mehrere 'header()' -Anweisungen ausgeben, um verschiedene Response-Header-Werte zu setzen (und oft wollen Sie dies tun, zB die Header für einen Datei-Download setzen), also sollte 'header()' eigentlich keine Antwort senden (und Skriptausführung beenden), sonst könnten alle nachfolgenden header() Anweisungen niemals ausgeführt werden. –

Antwort

6

Alle header() Anweisung ist ändern Sie die die Header Ihres Webservers (Apache, Nginx, etc.) an Ihren Browser senden. Sie haben der Seite einen Location:-Header hinzugefügt, der dem Browser mitteilt, auf diese Seite umzuleiten. Alles andere im PHP-Skript wird ausgeführt, einschließlich Ihrer echo, aber Sie werden es wahrscheinlich nicht sehen, weil Sie an einen neuen Ort weitergeleitet werden.

0

Der Header-Befehl unterbricht den Fluss Ihres Codes nicht. Selbst wenn das passiert, wird Ihre Seite immer noch vom Browser heruntergeladen, auch wenn sie nicht angezeigt wird. Betrachten Sie 404 Seiten, die (trotz Fehler) immer noch vom Browser verarbeitet werden (obwohl sie gerendert werden, während Weiterleitungen nicht sind).

Sie können viel mehr Header als nur Location-Header mit Header ausgeben, von denen die meisten die Codeausführung nicht stoppen sollen. Wenn Sie die Codeausführung stoppen möchten, müssen Sie exit explizit aufrufen.

Verwandte Themen