PHPのヘッダ()関数
定義と使用法
クライアントへのヘッダ()関数は、生のHTTPヘッダを送信します。
任意の実際の出力が送信される前に(PHP 4以降のバージョンでは、あなたがこの問題を解決するために出力バッファリングを使用することができます)、ヘッダ()関数を呼び出す必要があることを認識することが重要です。
<html>
<?php
// This results in an error.
// The output above is before the header() call
header('Location: http://www.example.com/');
?>
<?php
// This results in an error.
// The output above is before the header() call
header('Location: http://www.example.com/');
?>
文法
header(string,replace,http_response_code)
参数 | 描述 |
---|---|
string | 必需。规定要发送的报头字符串。 |
replace | 可选。指示该报头是否替换之前的报头,或添加第二个报头。默认是 TRUE(替换)。FALSE(允许相同类型的多个报头)。 |
http_response_code | 可选。把 HTTP 响应代码强制为指定的值。(PHP 4.3 以及更高版本可用) |
ヒントと注意事項
注:複数のヘッダを送信防止するためにPHP 4.4、関数の後に開始しています。これは、ヘッドインジェクション攻撃からの保護です。
例1
ページのキャッシュを無効にします。
<?php
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
<html>
<body>
...
...
// Date in the past
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");
?>
<html>
<body>
...
...
注:ユーザーは、デフォルトのブラウザのキャッシュ設定を変更するには、いくつかのオプションを設定することができます。上記のヘッダを送信することにより、あなたは、ブラウザのキャッシュを強制していない、これらの設定を上書きすることができます!
例2
生成されたPDFファイルを保存するようにユーザに促す(のContent-Dispositionヘッダを推奨ファイル名を提供し、保存ダイアログを表示するようにブラウザを強制的に使用されます):
<?php
header("Content-type:application/pdf");
// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// The PDF source is in original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...
header("Content-type:application/pdf");
// It will be called downloaded.pdf
header("Content-Disposition:attachment;filename='downloaded.pdf'");
// The PDF source is in original.pdf
readfile("original.pdf");
?>
<html>
<body>
...
...
注:Microsoft IEのバグを防止するためのメカニズムの存在よりも5.5以上。Service Pack 2またはそれ以降のバージョンにアップグレードすることで、あなたはバグを修正することができます。
完全なPHPのHTTPリファレンスマニュアル