PHP マニュアル
前のページ |  | 次のページ

# headers_sent

(PHP 3>= 3.0.8, PHP 4 , PHP 5)

headers_sent -- ヘッダーが既に送信されているかどうかチェックする

## 説明

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

この関数は、HTTPヘッダが既に送信されている場合に `TRUE` 、そうでな い場合に `FALSE` を返します。 また、オプション引数のfileと lineがセットされている場合、 PHPのソースファイル名と、出力が開始された行番号が、それぞれ fileとline変数に格納されます。

ヘッダーブロックが一旦送信されてしまった後でheader()関数を 使って新たなヘッダ行を送信することはできません。 この関数を使うには、少なくともHTTPヘッダ関連のエラーを予防する必要があります。 あるいは、Output Bufferingを 使う方法もあります。

> 注意: オプション引数fileとlineは PHP4.3.0で追加されました。

例 1. headers_sent()関数の使用例

`<?php
// ヘッダがまだ何も送信されていない場合送信する
if (!headers_sent()) {
header ('Location: http://www.example.com/');
exit;
}
// オプションのfileとlineパラメータの使用例（PHP4.3.0以降）
// $filename と $linenum が後で使用されていることに注目。
// これらの変数に事前に値を与えたりしてはいけません。
if (!headers_sent($filename, $linenum)) {
header ('Location: http://www.example.com/');
exit;
// You would most likely trigger an error here.
} else {
print "Headers already sent in $filename on line $linenum\n" .
"Cannot redirect, for now please click this <a " .
"href=\"http://www.example.com\">link</a> instead\n";
exit;
}
?>`

関連するディスカッションは ob_start(), trigger_error(), header()にもありますので参照ください。

前のページ | ホーム | 次のページ
headers_list | 上に戻る | setcookie