如何检查头是否已在PHP中发送
问题描述:
我想我们大多数人都知道PHP中臭名昭着的“Headers already sent”错误。如果标题已经发送,我可以检查吗?如何检查头是否已在PHP中发送
在尝试设置一些SESSION数据或类似内容之前,这样做确实很方便。
谢谢!
答
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也可能是感兴趣的,它返回所有发送头的数组。
为什么不确定在调用这些函数之前不*发送任何头文件? – 2010-05-12 16:11:15
@Dominic Rodger:如果这个脚本的目的是作为附加组件或扩展,或者任何其他类型的扩展/包含脚本,该怎么办?第三方代码可能会影响是否已经发送标头。 – 2010-05-12 16:16:20
@安迪 - 公平点,谢谢! – 2010-05-13 09:11:25