header已经发送,为什么还是返回false

天涯过客009 2014-04-24 06:29:17
header("Content-type: text/html; charset=gbk"); //发送一个报头
$a=headers_sent();
var_dump($a); //false

这里为什么返回false?????
...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2014-04-25
  • 打赏
  • 举报
回复
bool headers_sent ( [string &file [, int &line]] ) 如果 HTTP 标头尚未被发送出去的话,headers_sent() 将返回 FALSE,否则返回 TRUE。如果指定了可选参数 file 和 line, headers_sent() 将会把 PHP 的文件名以及从哪一行开始有输出放到 file 和 line 变量中。 一旦标头已经被发送,将不能再使用 header() 函数来发送其它的标头。使用此函数至少可以避免避免与 HTTP 标头有关的错误信息。另一个选择是使用输出缓存。 php 默认输出缓存是打开的,所以 headers_sent 总是返回假 #3 的 flush() 将输出缓存中的内容推出(真正输出了),所以其后的 headers_sent 返回真
天涯过客009 2014-04-24
  • 打赏
  • 举报
回复
引用 5 楼 ohmygirl 的回复:
很简单,只要有任意输出,或者调用flush headers_sent都会返回true 例如 header("Content-type: text/html; charset=gbk"); echo " "; var_dump(headers_sent());
我怀疑你这句话不对
天涯过客009 2014-04-24
  • 打赏
  • 举报
回复
引用 5 楼 ohmygirl 的回复:
很简单,只要有任意输出,或者调用flush headers_sent都会返回true 例如 header("Content-type: text/html; charset=gbk"); echo " "; var_dump(headers_sent());
header("Content-type: text/html; charset=gbk"); echo " "; var_dump(headers_sent()); //这里明明是false?????????????
ohmygirl 2014-04-24
  • 打赏
  • 举报
回复
很简单,只要有任意输出,或者调用flush headers_sent都会返回true 例如 header("Content-type: text/html; charset=gbk"); echo " "; var_dump(headers_sent());
天涯过客009 2014-04-24
  • 打赏
  • 举报
回复
引用 3 楼 microlab2009 的回复:
header("Content-type: text/html; charset=gbk");  
flush();//刷新输出缓冲 
var_dump(headers_sent());
可以讲点理论的知识吗?? 比如在什么情况下,headers_sent返回true??
嘻哈大咖秀 2014-04-24
  • 打赏
  • 举报
回复
header("Content-type: text/html; charset=gbk");  
flush();//刷新输出缓冲 
var_dump(headers_sent());
天涯过客009 2014-04-24
  • 打赏
  • 举报
回复
引用 1 楼 ohmygirl 的回复:
手册中有人提到这个问题: http://cn2.php.net/manual/en/function.headers-sent.php#86488
英语不好,看不懂,麻烦解释一下。谢谢。
ohmygirl 2014-04-24
  • 打赏
  • 举报
回复
手册中有人提到这个问题: http://cn2.php.net/manual/en/function.headers-sent.php#86488

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧