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制作に関するメモ-)。 […]
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。