检查内容是否已在PHP中发送

时间:2009-04-17 11:59:45

标签: php http-headers

是否有一种智能方法可以检查输出是否已经发送到浏览器并发送标头会生成PHP_WARNING吗?

显然可以选择使用输出缓冲区,但这并不总是一种选择。

5 个答案:

答案 0 :(得分:6)

您可以使用headers_sent()方法。这是因为在输出任何内容之前,首先会发送标题。

答案 1 :(得分:2)

if (headers_sent())
{
    trigger_error("Here you got your warning", E_WARNING);
}

答案 2 :(得分:1)

答案 3 :(得分:1)

headers_sent()做的不好,在发送输出(例如,通知和警告)的情况下,并不总是返回TRUE。

作为替代,我使用这个:

<?php

$obStatus = ob_get_status();

if ($obStatus['buffer_used'] > 0) {
    echo 'Content was sent';
} else {
    echo 'Content was NOT sent';
}

答案 4 :(得分:-1)

如果你想要隐藏警告,只需关闭error reporting

$old_er = error_reporting(0);

header(...)

error_reporting($old_er);

或者,您可以将PHP错误和警告重定向到日志文件(在生产中最好是IMO)。