0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

#09 PHP でリダイレクトがうまくいかないときに確認すること

Posted at

はじめに

今回は備忘録として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~");」です。
「:」とスペースの位置が正しくないといけません。

最後に

リダイレクトさせるにも細かい決まりがありました。
見落としやすい部分もあるので、注意してコーディングしていきたいですね。
以上です。

出典: https://www.php.net/manual/ja/function.header.php

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?