Header()関数は、HTMLファイル の送信に先立って、HTTPヘッダ文字列を送信 するために使用します。HTTPヘッダの詳細は、 HTTP 1.1 Specificationを参照して下さい。 注意: 覚えておいて頂きたいのは、Header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の出力 の前にコールする必要があることです。 頻出するエラーとして、include() または auto_prepend を有するコードで空白または空行があると header() がコールされる前に強制的に出力が 行われてしまうというものがあります。
特殊なheaderコールが2種類あります。最初のは、"Location"ヘッダーです。 このヘッダーはブラウザに返されるだけではなく、ApacheにREDIRECTステータスコードを 返します。スクリプトの作者にとっては、この点はあまり重要ではありませんが、 Apacheの内部動作を知る人にとっては、理解しておくべき重要なこととなります。
header("Location: http://www.php.net"); /* ブラウザをPHP Web サイトに
リダイレクトする */
exit; /* リダイレクトを行う際に以下のコードが
実行されないようにする */
|
2番目の特別な場合は、全てのヘッダが文字列"HTTP/"から始 まるということです。(大文字・小文字は区別されません)例えば、 ApacheディレクティブErrorDocument 404であるPHPスクリプトを指定し ている場合、そのPHPスクリプトがステータスコード404を生成するよう にすると良いでしょう。この場合、そのスクリプトの中に以下のように 記述します。
PHP スクリプトはしばしば動的に HTML を生成するため、クライアントブラウザや サーバーおよびクライアントブラウザの間でプロキシがキャッシュを行ったり するべきではありません。多くのプロキシとクライアントは、以下のコードにより 強制的にキャッシュを無効にできます。
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // 過去の日付
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// 常に修正されている
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Pragma: no-cache"); // HTTP/1.0
|
headers_sent()も参照下さい。