PHPのheader関数の覚書。
PHPはheader関数 でHTTPレスポンスのステータス・ラインやレスポンス・ヘッダを操作できる。PHPは何かを出力するときその直前にHTTPレスポンスを出力する。そのためheader関数はPHPの全ての出力の前に記述する。
<html> <?php header("Location : http://example.com"); ?> </html>
header関数の前に<html>が記述されておりこの直前でHTTPレスポンスが出力済みになる。
<?php print("Hello World"); header("Location : http://example.com"); ?>
header関数の前にprint文が記述されており、PHPはprint文を出力する直前にHTTPレスポンスを出力済み。
<?php require_once("inc.php"); header("Location : http://ameblo.jp/kinokohirame/"); print("Hello World"); ?> ---------- inc.php ---------- ← inc.phpの先頭行(空行とする) < ?php ・・・・・・・・・・・・・・・・・・・・・・・ ・・・・・・・・・・・・・・・・・・・・・・・ ?>
インクルードするファイルの先頭に空行が存在しする。空行がPHPからの出力となりheader関数の前にHTTPレスポンスが出力済みとなる。
バッファリングを行うことで上記の問題を解決することができる。
注意: PHP 4 では、この問題に対処するために出力のバッファリングを使用する ことが可能です。この場合、ブラウザへの出力が送信するまでサーバに全てバッファリングされるオーバーヘッドがあります。出力バッファリングは、 ob_start() と ob_end_flush() をスクリプトでコールするか php.ini またはサーバ設定ファイルの設定ディレクティブ output_buffering を設定することにより 行うことが可能です。
output_bufferingをOnにするか数字を指定するとバッファリングが有効になる。Offにすると無効になる。
[…] 力があるとエラーが出る。includeしているファイルのの上下に空白があったり、BOMつきだとエラーが出る。 output_bufferingをOnにするとよい(header関数 : PHP | FindxFine -Web制作に関するメモ-)。 […]
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。