この記事にはプロモーションが含まれています。

【PHP】POST送信されたデータを保持しながら別ページへリダイレクトする

【PHP】POST送信されたデータを保持しながら別ページへリダイレクトする

ケケンタ

PHPでPOST送信したデータをそっくりそのまま別のページに持っていきたいんだけど、そんな方法ってあるのかな……

今回はこのような疑問やお悩みをお持ちの方に向けて

PHPでPOST送信されたデータを保持しながら
別ページへ遷移(リダイレクト)する方法

をご紹介します。

この方法を用いれば、例えば

現在のファイル内でフォーム送信されたデータのバリデーションチェックを行い、問題が無ければそれらのデータを保持したまま次のページへ遷移(リダイレクト)する

といった実装が可能になります。




ケケンタ

ケケンタのITブログでは、WebアプリPHPLaravel)やWeb制作WordPressコーディング)について情報を発信しています。
学習中の方や実務をされている方など多くの方にアクセスいただいていますので、ぜひほかの記事も参考にしてみてください!


運動不足、気になっていませんか?

もしプログラミング学習やお仕事で運動不足が気になっているなら
連続屈伸運動がおすすめです!

ボタンにカーソルを合わせるだけ
カウントダウンが始まるタイマーをご用意してみました!

ケケンタ

無理のない範囲で、ぜひ隙間時間に屈伸運動を取り入れてみて下さい!

タイマースタート

3:00

※運動不足だと連続3分で取り組んでもかなり息が切れます
(僕は加えて気分もちょっと悪くなりました……)
絶対にご無理の無い範囲でお取り組みください!


目次

【結論】header関数を使用する

早速ですが、以下が今回の答えとなるソースコードです。

<?php

/*
 * 実行したい処理
 */ 

// 「リダイレクト先のパス」へ遷移する処理
header('Location: リダイレクト先のパス', true, 307);
exit;

?>

「リダイレクト先のパス」は相対パスでも絶対パスでもどちらでも有効です。

(例)相対パスで指示した場合

<?php

/*
 * 実行したい処理
 */ 

// 「リダイレクト先のパス」へ遷移する処理
header('Location: ./sample.php', true, 307);
exit;

?>

【解説】header関数とステータスコード

header関数とは

PHPのheader関数は、HTTPヘッダーの内容を指定する際に用いられる関数です。

例えば上記ソースコードの「Location」はLocationヘッダーと呼ばれるもので、リダイレクト先のURLを指定する際に使用します。

上記のソースコードが実行されると、最終的に「リダイレクト先のパス」で指定したURLへ遷移(リダイレクト)されます。

なお、本記事の主旨でもっとも重要となるのが第3引数に指定してある「307」という数字です。

ケケンタ

この数字はいわゆる「ステータスコード」と呼ばれるものです。

「404エラー(ページが存在しない)」はご覧になったことがある方も多いかと思いますが、これもステータスコードのひとつです。

上記のソースコードのようにheader関数に「307」を指定すると「POST送信されてきたデータを保持したままリダイレクトする」という意味になります。

header関数使用時の「注意点」

POST送信されたデータを保持したまま別ページへ遷移する方法はいたってシンプルですが、header関数を使用するにあたっては注意点があります。

header関数を使用する際の注意点
  • header関数より上で「値を出力する処理」を記述するとエラーになる
  • header関数より下の行に記述された処理は実行されない

① header関数より上で「値を出力する処理」を記述するとエラーになる

例えば、以下のようにheader関数の上にHTMLの記述をしてしまうとエラーになります。

<p>これはHTMLのコード</p>

<?php

/*
 * 実行したい処理
 */ 

// 「リダイレクト先のパス」へ遷移する処理
header('Location: ./sample.php', true, 307);
exit;

?>

もちろんechovar_dumpなどの処理を記述してもエラーになります。
さらに、「空白」や「スペース」がheader関数より前に含まれていると、これも出力と見なされてエラーになります。

② header関数より下の行に記述された処理は実行されない

以下のように、header関数より下の行に何かしらの処理を記述したとしても、その部分は実行されません。

<?php

/*
 * 実行したい処理
 */ 

// 「リダイレクト先のパス」へ遷移する処理
header('Location: ./sample.php', true, 307);
exit;


/*
 * ***** ここから下の処理は実行されない *****
 */ 

// ※header関数直後の「exit」は処理を確実に終わらせるために念のため記述してあるものですが、
// これが無かったとしてもheader関数以降の処理は実行されません。

?>
ケケンタ

以上のようにheader関数を使用する際には注意点があります。
それを忘れたまま使用すると思わぬところで沼にハマる可能性があるため、念頭に置いておきましょう。

まとめ

以上がPHPでPOST送信されたデータを保持しながら別ページへ遷移(リダイレクト)する方法でした。

header関数を使用することで簡単に実装できることがお分かりいただけたかと思います。

ケケンタ

header関数はリダイレクト処理を行う上で必須なので、今回初めてこの関数を知ったという方はこれを機にぜひheader関数について深堀してみて下さい。

それでは最後までご覧いただきありがとうございました。

無料でPHPが学べるプログミングスクール

POST送信されたデータを保持しながら別ページへリダイレクトする方法のアイキャッチ画像

この記事が気に入ったら
フォローしてね!

この記事が良いと思ったらシェアしてね!

コメント

コメントする

CAPTCHA


目次