headers_sent
(PHP 3 >= 3.0.8, PHP 4, PHP 5)
headers_sent -- Prüft, ob oder wo die Header bereits gesendet wurden
Beschreibung
bool
headers_sent ( [string &file [, int &line]] )
headers_sent() gibt FALSE zurück, wenn noch keine
HTTP-Header gesendet wurden, ansonsten TRUE. Sind die optionalen
Parameter file und line
angegeben, schreibt headers_sent() den PHP-Dateinamen und
die Zeilennummer, an denen die Ausgabe begann, in die Variablen
file und line.
Sobald der Header-Block gesendet wurde, können Sie keine weiteren
Header-Zeilen mit der Funktion header() hinzufügen.
Mittels dieser Funktion können Sie aber zumindest Fehlermeldungen
bezüglich der HTTP Header vermeiden. Eine andere Möglichkeit ist die
Verwendung von Output Buffering.
Anmerkung:
Die optionalen Parameter file und
line wurden in PHP 4.3.0 eingeführt.
Beispiel 1. Beispiele für headers_sent()
<?php
// Wenn keine Header gesendet wurden, sende einen if (!headers_sent()) { header ('Location: http://www.example.com/'); exit; }
// Ein Beispiel für den Einsatz der seit PHP 4.3.0 verfügbaren optionalen // Parameter file und line. Beachten Sie, dass $filename und $linenum für // einen späteren Einsatz übergeben werden. // Weisen Sie ihnen davor keine Werte zu. if (!headers_sent($filename, $linenum)) { header ('Location: http://www.example.com/'); exit;
// Wahrscheinlich wollen Sie hier eine Fehlermeldung auslösen } else {
echo "Header bereits gesendet in $filename in Zeile $linenum\n" . "Redirect nicht moeglich, klicken Sie daher statt dessen <a " . "href=\"http://www.example.com\">diesen Link</a> an\n"; exit; }
?>
|
|
Siehe auch ob_start(), trigger_error()
und header() für detailliertere Informationen zu diesem
Thema.