array ( 0 => 'index.php', 1 => 'PHP Manual', ), 'head' => array ( 0 => 'UTF-8', 1 => 'ja', ), 'this' => array ( 0 => 'function.headers-sent.php', 1 => 'headers_sent', ), 'up' => array ( 0 => 'ref.network.php', 1 => 'ネットワーク 関数', ), 'prev' => array ( 0 => 'function.headers-list.php', 1 => 'headers_list', ), 'next' => array ( 0 => 'function.http-response-code.php', 1 => 'http_response_code', ), 'alternatives' => array ( ), 'source' => array ( 'lang' => 'ja', 'path' => 'reference/network/functions/headers-sent.xml', ), ); $setup["toc"] = $TOC; $setup["toc_deprecated"] = $TOC_DEPRECATED; $setup["parents"] = $PARENTS; manual_setup($setup); ?>
(PHP 4, PHP 5, PHP 7, PHP 8)
headers_sent — ヘッダが既に送信されているかどうかを調べる
ヘッダがすでに送信されているかどうかを調べます。
ヘッダブロックがいったん送信されてしまった後で header() 関数を使って新たなヘッダ行を送信することはできません。 この関数を使うには、少なくとも HTTP ヘッダ関連のエラーを予防する必要があります。 あるいは、出力バッファリング を使う方法もあります。
filename
オプション引数の filename
と
line
がセットされている場合、
PHP のソースファイル名と出力が開始された行番号が、それぞれ
filename
と line
に格納されます。
注意:
PHP のソースファイルを実行する前(たとえば、実行開始時にエラーが発生した場合) に出力が開始された場合、
filename
は空文字列になります。
line
出力を開始した行番号。
例1 headers_sent() 関数の使用例
<?php
// ヘッダがまだ何も送信されていない場合に、送信します
if (!headers_sent()) {
header('Location: http://www.example.com/');
exit;
}
// オプションのfileとlineパラメータの使用例
// $filename と $linenum が後で使用されていることに注目。
// これらの変数に事前に値を与えたりしてはいけません。
if (!headers_sent($filename, $linenum)) {
header('Location: http://www.example.com/');
exit;
// おそらく、ここでエラー処理を行うでしょう。
} else {
echo "$filename の $linenum 行目でヘッダがすでに送信されています。\n" .
"リダイレクトできません。代わりにこの <a " .
"href=\"http://www.example.com\">リンク</a> をクリックしてください。\n";
exit;
}
?>
注意:
ヘッダにアクセスできたりヘッダを出力したりするのは、 それに対応した SAPI を使っている場合のみです。