ホームページ >バックエンド開発 >PHPチュートリアル >ヘッダーは送信されましたが、それでも false が返されるのはなぜですか?

ヘッダーは送信されましたが、それでも false が返されるのはなぜですか?

WBOY
WBOYオリジナル
2016-06-23 13:58:151061ブラウズ

header("Content-type: text/html; charset=gbk"); // ヘッダーを送信します
$a=headers_sent();
var_dump($a); // ここで false が返されるのはなぜですか?? ? ?

ディスカッションへの返信 (解決策)
誰かがマニュアルでこの問題について言及しました:

http://cn2.php.net/manual/en/function.headers-sent.php#86488


誰かがマニュアルでこの問題について言及しています:

http://cn2.php.net/manual/en/function.headers-sent.php#86488

私の英語は苦手なので説明してください。それ。ありがとう。

header("Content-type: text/html; charset=gbk");  flush();//刷新输出缓冲 var_dump(headers_sent());

header("Content-type: text/html; charset=gbk");  flush();//刷新输出缓冲 var_dump(headers_sent());

理論的な知識を教えていただけますか? ?

たとえば、 headers_sent はどのような状況で true を返しますか??


非常に単純です。出力があるかフラッシュが呼び出されている限り、 headers_sent は true を返します。
たとえば、 header("Content-type: text/html; charset=gbk");

echo " ";
var_dump(headers_sent());


非常に単純で、出力またはフラッシュがある限り
headers_sent が呼び出されると true を返します

たとえば

header("コンテンツ タイプ: text/html; charset=gbk" );

echo " ";
var_dump(headers_sent());

header("Content-type: text/html; charset=gbk");
echo " " ;
var_dump(headers_sent()); //これは明らかに false です????????????




出力があるか、headers_sent が呼び出される限り、それは非常に簡単です、 true を返します
たとえば、
header("Content-type: text/html ; charset=gbk"); var_dump(headers_sent());


あなたの文は間違っていると思います

bool headers_sent ([string &file [, int &line]])

HTTP マークの場合 ヘッダーがまだ送信されていない場合、headers_sent() は FALSE を返し、それ以外の場合は TRUE を返します。オプションのパラメータ file と line が指定されている場合、headers_sent() は PHP ファイル名と出力が始まる行を file 変数と line 変数に入れます。


ヘッダーが送信されると、header() 関数を使用して他のヘッダーを送信することはできなくなります。この関数を使用すると、少なくとも HTTP ヘッダーに関連するエラー メッセージを回避できます。もう 1 つのオプションは、出力キャッシュを使用することです。
PHP のデフォルトの出力キャッシュはオンになっているため、headers_sent は常に false を返します

#3 の flash() は出力キャッシュの内容をプッシュアウトする (実際に出力する) ため、後続の headers_sent は true を返します


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。