(PHP 4, PHP 5, PHP 7, PHP 8)
headers_sent — 檢測 HTTP 頭是否已經(jīng)發(fā)送
&$file
= ?, int &$line
= ?): bool檢測 HTTP 頭是否已經(jīng)發(fā)送。
HTTP 頭已經(jīng)發(fā)送時,就無法通過 header() 添加更多頭字段。 使用此函數(shù)起碼可以防止 HTTP 頭出錯。另一個解決方案是用 輸出緩沖。
file
若設(shè)置了可選參數(shù) file
and
line
,
headers_sent() 會把 PHP 文件名放在 file
變量里,
輸出開始的行號放在 line
變量里。
line
輸出開始的行號。
HTTP 頭未發(fā)送時,headers_sent() 返回 false
,否則返回 true
。
示例 #1 使用 headers_sent() 的例子
<?php
// 沒有 HTTP 頭就發(fā)送一個
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}
// 使用 file 和 line 參數(shù)選項的例子
// 注意 $filename 和 $linenum 用于下文中使用
// 所以不要提前為它們賦值
if (!headers_sent($filename, $linenum)) {
header('Location: http://www.example.com/');
exit;
// 很有可能在這里觸發(fā)錯誤
} else {
echo "Headers already sent in $filename on line $linenum\n" .
"Cannot redirect, for now please click this <a " .
"href=\"http://www.example.com\">link</a> instead\n";
exit;
}
?>
注意:
數(shù)據(jù)頭只會在SAPI支持時得到處理和輸出。