PHP headers_sent() 函数检查标头是否已发送或发送到何处。一旦发送了标头块,就不能使用 header() 函数添加更多标头行。此函数用于防止获取与 HTTP 标头相关的错误消息。
语法
headers_sent(filename, line)
参数
filename | 可选。 如果设置了filename和line参数,该函数会将PHP源文件名和开始输出的行号放在filename 和 line 变量。 |
line | 可选。 指定输出开始的行号。 |
返回值
如果还没有 HTTP 标头,则返回 false
示例:headers_sent() 示例
下面的示例显示了 headers_sent() 函数的用法。由于之前没有发送标头,因此 !headers_sent() 将为 TRUE,然后 header('Location: http://www.example.com/'); 将为发送标头信息并根据标头重定向到参数中的网站。
<?php
//如果没有发送头,则发送一个
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}
?>
示例:使用文件名和行参数
如果 filename和line参数设置后,该函数会将PHP源文件名和输出开始的行号放在filename和line<中/i> 变量。
<?php
//$filename 和 $linenum 被传递以供以后使用
//不预先给它们赋值
if (!headers_sent($filename, $line)) {
header('Location: http://www.example.com/');
exit;
//这里触发错误
} else {
echo "Headers already sent in $filename on line $line\n" .
"Cannot redirect, for now please click this <a " .
"href=\"http://www.example.com\">link</a>\n";
exit;
}
?>