Soll ich nach dem Aufrufen des Umleitungsfunktionsheaders exit aufrufen oder nicht?
<?php // fileA
$urlFailToGoTo = '/formerror.php';
if (sth)
{
header(sprintf("Location: %s", $urlFailToGoTo));
exit(); //should I call exit() here? or return?
}
?>
Vielen Dank
Antworten:
Das solltest du auf jeden Fall. Andernfalls wird die Skriptausführung nicht beendet. Das Festlegen eines anderen Headers allein reicht nicht aus, um umzuleiten.
quelle
Sie sollten, genau wie @rgroli erklärt. Wenn Sie sich nicht mit Klammern beschäftigen möchten, können Sie auch
header()
IN aufrufenexit()
:if(sth) exit(header("Location: http://example.com"));
Der Standortheader in HTTP / 1.1 erfordert immer einen absoluten Pfad ( siehe Hinweis hier) .
Hinweis: Dies ist kein Hack, da der Exit-Code nur verwendet wird, wenn der Parameter eine Ganzzahl ist, während er
header()
void erzeugt (er wird mit Code = 0 beendet, normaler Exit). Betrachten Sie es alsexit_header()
Funktion, wie sie nach demLocation
Header sein sollte.quelle
header
INexit()
? ;)header
als Exit-Code von übergebenexit
? Wäre das nicht etwas unerwünscht?header()
in PHP gibt void zurück und der Exit-Code wird nur verwendet, wenn der Parameter eine Ganzzahl ist. In diesem Fall wird die Codegenerierung nur stillschweigend gestoppt (was bedeutet, dass der Exit-Code = 0 ist, normaler Exit).Es wird im Allgemeinen
exit;
empfohlen,()
nach dem Senden einesLocation:
Headers (beachten Sie, dass es sich um ein Schlüsselwort handelt, das Sie also nicht benötigen ) zu verwenden , da Browser auf die neue Seite umleiten sollen und die weitere Ausführung des aktuellen Skripts normalerweise unerwünscht ist.quelle
Wenn Sie keinen Code (PHP oder HTML) unter der Kopfzeile haben, müssen Sie dies nicht tun.
quelle
exit ist eine schlechte Codierung.
Wenn Sie jemals ein großes Projekt entwickeln und PHP Unit Testcases erstellen möchten, wird Exit Sie vermasseln.
exit beendet das Skript und Ihren laufenden Test! Es gibt keine Möglichkeit, den Test wiederherzustellen und festzustellen, ob er fehlgeschlagen ist oder nicht ...
Organisieren Sie Ihren Code so, dass keine Ausgabe erfolgt und das Skript natürlich endet, wenn Sie eine Umleitung verwenden ...
quelle
exit
Befehl beendet wurde.:/
exit
Aufrufs (oder auchbreak
innerhalb einer Funktion / Methode)? Nicht nur in PHP, sondern in fast jeder bekannten Programmiersprache?