PHP 网络函数

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;
}
?>