(PHP 4, PHP 5, PHP 7, PHP 8)
headers_sent — 檢測(cè) HTTP 頭是否已經(jīng)發(fā)送
&$file
= ?, int &$line
= ?): bool檢測(cè) HTTP 頭是否已經(jīng)發(fā)送。
HTTP 頭已經(jīng)發(fā)送時(shí),就無(wú)法通過(guò) header() 添加更多頭字段。 使用此函數(shù)起碼可以防止 HTTP 頭出錯(cuò)。另一個(gè)解決方案是用 輸出緩沖。
file
若設(shè)置了可選參數(shù) file
and
line
,
headers_sent() 會(huì)把 PHP 文件名放在 file
變量里,
輸出開(kāi)始的行號(hào)放在 line
變量里。
line
輸出開(kāi)始的行號(hào)。
HTTP 頭未發(fā)送時(shí),headers_sent() 返回 false
,否則返回 true
。
示例 #1 使用 headers_sent() 的例子
<?php
// 沒(méi)有 HTTP 頭就發(fā)送一個(gè)
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}
// 使用 file 和 line 參數(shù)選項(xiàng)的例子
// 注意 $filename 和 $linenum 用于下文中使用
// 所以不要提前為它們賦值
if (!headers_sent($filename, $linenum)) {
header('Location: http://www.example.com/');
exit;
// 很有可能在這里觸發(fā)錯(cuò)誤
} 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ù)頭只會(huì)在SAPI支持時(shí)得到處理和輸出。