🧑💻
#09 PHP でリダイレクトがうまくいかないときに確認すること
はじめに
今回は備忘録としてheader 関数でよくあるエラーの原因をまとめました。
「PHP でリダイレクトしたいのにうまくいかない…。」
そんな方に確認していただきたい内容です。
PHPでリダイレクトする方法
header 関数は、HTTP ヘッダを送信する役割があります。
Location を使うことで指定した URL へ遷移することができます。
<?php
header("Location: http://www.example.com/");
exit;
?>
※ URL は絶対パスでも相対パスでも指定できます。
※ リダイレクト以降のコードが実行されないよう exit 関数で処理を終了させています。
よくあるエラーとその原因
1. HTML の出力後に header() を呼び出している
例1
<html>
</html>
// header() の前に出力している
<?php
header("Location: http://www.example.com/");
exit;
?>
header() はすべての出力の前に呼び出す必要があります。
echo 、print 、HTML 等の出力前に呼び出してください。
2. header() の前に不要なスペースや改行がある
例2-1
<?php
header("Location: http://www.example.com/");
// header() の前で改行している
exit;
?>
例2-2
<?php
header("Location: http://www.example.com/");
// php タグの前にスペースがある
exit;
?>
php タグの中だけでなく、php タグの前にスペースや改行がある場合も
HTML を出力したとみなされエラーになります。
3. 記述を間違えている
例3
<?php
header("Location : http://www.example.com/");
// 「"Location : 」では「:」の位置が正しくない
exit;
?>
正しくは「("Location: http~");」です。
「:」とスペースの位置が正しくないといけません。
最後に
リダイレクトさせるにも細かい決まりがありました。
見落としやすい部分もあるので、注意してコーディングしていきたいですね。
以上です。
Discussion