如何检查头是否已在PHP中发送

问题描述:

我想我们大多数人都知道PHP中臭名昭着的“Headers already sent”错误。如果标题已经发送,我可以检查吗?如何检查头是否已在PHP中发送

在尝试设置一些SESSION数据或类似内容之前,这样做确实很方便。

谢谢!

+0

为什么不确定在调用这些函数之前不*发送任何头文件? – 2010-05-12 16:11:15

+3

@Dominic Rodger:如果这个脚本的目的是作为附加组件或扩展,或者任何其他类型的扩展/包含脚本,该怎么办?第三方代码可能会影响是否已经发送标头。 – 2010-05-12 16:16:20

+0

@安迪 - 公平点,谢谢! – 2010-05-13 09:11:25

PHP有一个功能headers_sent()它允许您检查是否已经发送标头,然后再采取任何措施。以下是如何使用代码中的函数:

if(headers_sent()) 
{ //if headers already sent out print some message. 
echo "Please go to yahoo.com"; 
} 
else{ 
//send the user automatically to test.php 
header('Location: http://yahoo.com'); 
exit; 
} 
+0

然后不要忘记在'header()'之后'exit()'! – nalply 2013-04-11 19:16:06

是的,你可以使用headers_sent函数。

检查是否或在哪里发送了标头 。

一旦已经发送了 标题块,就不能使用header()函数添加更多标题行 。 使用此功能,您至少可以 防止获取HTTP标头相关的 错误消息。另一个选项是 使用输出缓冲。

headers_list也可能是感兴趣的,它返回所有发送头的数组。