In PHP wird die Header () -Funktion verwendet, um ursprüngliche HTTP -Header -Informationen wie Umleitungen, Einstellen von Cookies, Änderungen von Inhaltstypen usw. zu senden. Dies liegt daran, dass PHP nach Beginn der Ausgabe den HTTP -Header automatisch sendet.
Um Fehler beim Aufrufen von Header () zu vermeiden, können wir die Funktion Header_Sent () verwenden, um festzustellen, ob der Header gesendet wurde.
Headers_Sent () ist eine integrierte Funktion, die von PHP bereitgestellt wird, um zu überprüfen, ob HTTP-Header-Informationen an den Browser gesendet wurden. Die grundlegende Nutzung ist wie folgt:
if (!headers_sent()) {
header('Location: https://m66.net/some-page');
exit;
}
Wenn der Header noch nicht gesendet wurde, gibt Header_Sent () false zurück und gibt an, dass Header () sicher aufgerufen werden kann. Wenn dies der Fall ist , bedeutet dies, dass der Header gesendet wurde und bei dem Aufrufen von Header () ein Fehler gemeldet wird.
Headers_Sent () kann auch zwei Parameter akzeptieren, um die Position (Datei und Zeilennummer) der Headerausgabe zu erhalten:
if (headers_sent($file, $line)) {
echo "HTTP Der Kopf ist schon da $file Der erste des Dokuments $line Zeile senden。";
} else {
header('Location: https://m66.net/some-other-page');
exit;
}
Diese Methode eignet sich besonders zum Debuggen und hilft Ihnen dabei, den Standort des Codes im Voraus auszugeben.
Bevor Sie eine Weiterleitung durchführen, sollten Sie sicherstellen, dass keine Ausgabe vorliegt:
if (!headers_sent()) {
header('Location: https://m66.net/login');
exit;
} else {
echo "Nicht in der Lage, umzuleiten,Weil es bereits ausgegeben gibt。";
}
In ähnlicher Weise stützt sich SetCookie () auf HTTP -Header. Überprüfen Sie es auch:
if (!headers_sent()) {
setcookie('user', 'JohnDoe', time() + 3600, '/');
} else {
echo "Nicht eingestellt werden cookie,Weil der Kopfball gesendet wurde。";
}
Wenn Sie häufig auf Header -Senden -Fehler stoßen, sollten Sie die Ausgabepufferung am Anfang des Skripts aktivieren:
ob_start();
Auf diese Weise wird alle Ausgaben zuerst eingeben, anstatt ihn sofort an den Browser zu senden, bis das Skript vorbei ist oder der OB_END_FLUSH () aufgerufen wird, sodass Sie mehr Zeit für die sicheren Senden von Headerinformationen erhalten.