2013年2月13日水曜日

PHPのリダイレクト時のエラーについて

今回ちょろっと問題が起こって調べることがあったんで覚書き。
PHPのリダイレクトはheader関数を使って行うが、header関数を使用する前に出力が行われている、又は行われる可能性がある場合はエラーが発生する。
以下例(< >は通常半角)


例1:通常出力を行っている場合
<?php

echo 'Hello World';

header("Location:index.php");
exit();
?>

例2:HTMLの部分での出力を行っている場合

<html>
<body>
AAA
</body>
</html>
<?php

header("Location:index.php");
exit();
?>

例3:出力が行われる可能性がある場合

<?php
$flag = false;
if(flag){
echo 'Hello World';
}
header("Location:index.php");
exit();
?>

例4:include先で出力が行われている場合
<?php
include(test.php);
test();

header("Location:index.php");
exit();
?>

[test.php]
<?php
function test(){
echo 'Hello World';
}
?>
※require_once等でも同様


その他、ファイルのフォーマットがUTF-8のBOM付きである場合もエラーが発生してしまうので注意。

0 件のコメント:

コメントを投稿