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
一样,它会保存所有输出,直到脚本完成处理,然后显示该输出,从而在脚本的末尾发送标头/主体标签。
希望清除它。如果没有,请参阅上面张贴的手动链接,并阅读手册中的示例。
回答:
如果在显示的代码执行之前调用了ob_start
,则可能发生这种情况。
回答:
看看你的php。INI配置文件并查找包含output_buffering
线,并确保它看起来像:
output_buffering = Off
如果您有它关闭,然后echo headers_sent()
应该输出1
如果你拥有了它,然后echo headers_sent()
不会输出因为header_sent()在这种情况下将返回FALSE,因为头文件(意味着不是HTML <h1>
但是HTTP响应头文件)还没有被发送,因为输出被缓冲了。
要强制发送消息头和输出回波编辑到目前为止,您可以拨打flush()
以上是 php headers_sent函数不起作用 的全部内容, 来源链接: utcz.com/qa/265654.html