php headers_sent函数不起作用
<h1>Header</h1>
<?php
echo 'teste'; // output here
echo headers_sent(); // no output here!
?>
为什么headers_sent()在这种情况下不输出? 谢谢。php headers_sent函数不起作用
因为它返回true或false。
var_dump(headers_sent());
应该出现(一个或下面)
bool(true)
bool(false)
这是工作,它只是不会输出文本,如果是假的,因为它不是文本它是值为boolean
。这个函数的一般用途是为一个if语句,不显示语句,如果你想显示它简单地使用ternary operator
echo (headers_sent())?'true':'false';
编辑
感谢维克多指正:它如果为true,则返回1;如果为false,则返回空字符串。
更新
为什么headers_sent()
返回假的?嗯澄清,我将发布从手动:
headers_sent - 检查或者 头已被送往
基本上,当你有任何输出,自动发送头到浏览器和开始身体。例如:
<?php
echo "test";
echo headers_sent(); // should yield 1
?>
这应该显示1,因为我们对headers_sent
呼叫有一个回声声明。
<?php
echo headers_sent(); // should yield empty string
?>
这将显示一个空字符串,因为在headers_sent()调用之前没有输出。以上假定 output_buffering关闭。与output_buffering
一样,它会保存所有输出,直到脚本完成处理,然后显示该输出,从而在脚本的末尾发送标头/主体标签。
希望清除它。如果没有,请参阅上面张贴的手动链接,并阅读手册中的示例。
看看你的php。INI配置文件并查找包含output_buffering
线,并确保它看起来像:
output_buffering = Off
如果您有它关闭,然后echo headers_sent()
应该输出1
如果你拥有了它,然后echo headers_sent()
不会输出因为header_sent()在这种情况下将返回FALSE,因为头文件(意味着不是HTML <h1>
但是HTTP响应头文件)还没有被发送,因为输出被缓冲了。
要强制发送消息头和输出回波编辑到目前为止,您可以拨打flush()
转换TRUE;一个字符串应该产生'1' ...没有输出的表示该函数返回'FALSE'(其产生一个空字符串)。 – 2010-10-13 17:18:17
true value以这种方式打印:'1' – thomas 2010-10-13 17:18:41
var_dump(headers_sent()); =='bool(false)' – thomas 2010-10-13 17:20:47