(PHP 4, PHP 5, PHP 7)
headers_sent — 检测 HTTP 头是否已经发送
&$file
[, int &$line
]] ) : bool检测 HTTP 头是否已经发送。
HTTP 头已经发送时,就无法通过 header() 添加更多头字段。 使用此函数起码可以防止 HTTP 头出错。另一个解决方案是用 输出缓冲。
file
若设置了可选参数 file
and
line
,
headers_sent() 会把 PHP 文件名放在 file
变量里,
输出开始的行号放在 line
变量里。
line
输出开始的行号。
HTTP 头未发送时,headers_sent() 返回 FALSE
,否则返回 TRUE
。
Example #1 使用 headers_sent() 的例子
<?php
// 没有 HTTP 头就发送一个
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}
// 使用 file 和 line 参数选项的例子
// 注意 $filename 和 $linenum 用于下文中使用
// 所以不要提前为它们赋值
if (!headers_sent($filename, $linenum)) {
header('Location: http://www.example.com/');
exit;
// 很有可能在这里触发错误
} 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;
}
?>
Note:
数据头只会在SAPI支持时得到处理和输出。