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

回到顶部