headers_sent()似乎不起作用?

时间:2018-03-05 13:32:05

标签: php

重要提示output_buffering已关闭,我已通过get_ini()进行了检查,因此请不要回答迭代事项。

我有一个简单的PHP代码:

<?php

在第一步中我将发送一个标题,我在php开始标记之前也没有写任何内容,标题是第一步:

header('Content-type: text/html; charset=utf-8');

现在我想确保我的标题已被发送,所以我使用header_sent()函数

if(!headers_sent()) {
    ?><script type="text/javascript">alert('No headers have been sent')</script><?php
} else {
    ?><script type="text/javascript">alert('headers have been sent')</script><?php
}
?>

不幸的是,我不知道为什么我会遇到“没有标题已被发送”,而我希望标题已被发送。

1 个答案:

答案 0 :(得分:2)

首次尝试输出正文数据时,标题会发送到Web服务器。一旦发生这种情况,您就无法再发送标头了。 headers_sent的更合适的名称可能是do_i_still_have_the_chance_to_send_any_more_headers_now()。如果headers_sentfalse,您仍然可以使用header()发送更多标头;如果它true您无法再发送标题。如果headers_sentfalse,则表示不会发送 的标头,也不会忽略之前的header来电。

如果您想查看发送的标头(或已经发送过),请参阅headers_list