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

42

我想大多数人都知道 PHP 中臭名昭著的“Headers already sent”错误。我能否检查是否已经发送了头信息?

在尝试设置某些 SESSION 数据或类似内容之前,这样做会非常有用。

谢谢!


2
为什么不确保在调用这些函数之前不要发送任何头部? - Dominic Rodger
4
如果这个脚本是作为插件、扩展或其他形式的引用脚本,第三方代码可能会影响是否已经发送了头信息。 - Andy E
2个回答

60

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

1
然后别忘了在 header() 后面加上 exit() - nalply

12

可以使用 headers_sent 函数。

检查是否已发送头信息以及发送的位置。

一旦头信息块被发送,就无法再使用 header() 函数添加更多的头行。使用此函数,您至少可以防止获取与HTTP头相关的错误消息。另一种选择是使用输出缓冲。

还可能会对您有所帮助的是headers_list,它返回所有已发送的头信息的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接