【PHP】Warning: Cannot modify header information - headers already sent byの話

「Warning: Cannot modify header information - headers already sent by」というエラーの対処について

このエラーがでる原因としては、header()関数の前に、何かを出力してしまっていることが挙げられます。

覚えておいて頂きたいのは、header() 関数は、 通常の HTML タグまたは PHP からの出力にかかわらず、すべての実際の 出力の前にコールする必要があることです。 頻出するエラーとして、include() または require() 関数、他のファイルをアクセスする関数に 空白または空行があり、header() の前に出力が 行われてしまうというものがあります。同じ問題は、単一の PHP/HTML ファイルを使用している場合でも存在します。
PHP: header - Manual

例えば、

<?php
echo “hogehoge”://heder()関数の前に出力しているのでエラーになります
header('Location:http://hoge.com');
exit;
?>

また、下記のようにURLに値がなかったら他のページに飛ばして、値があったらHTMLを出力するというプログラムですが、

<html>
<?php
if($_REQUEST['hoge'] === ""):
  header('Location:http://hoge.com');
  exit;
else:
?>
<!—HTMLを出力--->
<?php
endif;
?>
</html>

というのでもエラーになります。
※htmlタグの前にheder()関数を書けばエラーになりません。

自分がやってしまったのが、

<?php
if(empty($error)){
  $_SESSION = $_POST;
  var_dump($_SESSION);//header()関数の前に出力されているためエラー
  header('Location:http://hoge.com');
  exit;
}
?>

SESSION変数に渡された内容をチェックしていて、後からheader()関数を書いて消し忘れてしまって、エラーが出続けてしまったというものですね。

まだまだ、修行が必要ですが頑張っていきます。

ご一読頂きまして、ありがとうございました。