PHP headers_sent 网络函数
-
定义和用法
headers_sent - 检测 HTTP 头是否已经发送 -
版本支持
PHP4 PHP5 PHP7 支持 支持 支持 -
语法
headers_sent ( [ string &$file [, int &$line ]] )
检测 HTTP 头是否已经发送。 HTTP 头已经发送时,就无法通过 header() 添加更多头字段。 使用此函数起码可以防止 HTTP 头出错。另一个解决方案是用输出缓冲。 -
参数
参数 必需的 描述 file 否 若设置了可选参数 file and line, headers_sent() 会把 PHP 文件名放在 file 变量里, 输出开始的行号放在 line 变量里。 line 否 输出开始的行号。 -
返回值
HTTP 头未发送时,headers_sent() 返回 FALSE,否则返回 TRUE。 -
示例
<?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; }
-
相关函数
ob_start() - 打开输出控制缓冲trigger_error() - 产生一个用户级别的 error/warning/notice 信息headers_list() - 返回已发送的 HTTP 响应头(或准备发送的)header() - 发送原生 HTTP 头 中有更多相关细节的讨论。