2023.10.08
【PHP】リダイレクトで$_POSTを渡す

UnsplashSergei Aが撮影した写真

はじめに

今回は「header()」を使い以下2種類のリダイレクト方法についてご紹介します。

・通常のリダイレクト
・$_POSTを渡すリダイレクト

動作確認した環境

OS:Windows11 / WSL(Ubuntu20.04)
php:v7.4.33

通常のリダイレクト

通常のリダイレクトのコードは以下です。

header("Location: リダイレクト先のパス");
例)header("Location: file1.php");

$_POSTを渡すリダイレクト

受け取った$_POSTをさらに次に渡すリダイレクトのコードは以下です。

header("Location: リダイレクト先のパス", true, 307);
例)header("Location: file1.php", true, 307);

「$_POSTを渡すリダイレクト」を試す

以下のように1つのフォルダの中にform.php、file1.php、file2.phpを作成してください。

■form.php

<h2>form.php</h2>

<form action="./file1.php" method="post">
    <p><label for="name">氏名</label></p>
    <p><input type="text" name="name"></p>

    <p><label for="password">パスワード</label></p>
    <p><input type="text" name="password"></p>

    <button type="submit" name="operation" value="send">登録</button>
</form>

■file1.php

<h2>file1.php</h2>

<?php
header("Location: file2.php", true, 307);
?>

■file2.php

<h2>file2.php</h2>

<?php
echo "<pre>" , var_dump($_POST) , '</pre>';
?>

3ファイルを作成したら、form.phpをブラウザで開き、フォームを送信してみてください。

formを送信すると、file1.phpでリダイレクトされfile2.phpが表示されるはずです。

フォームから送信したデータがリダイレクト先のfile2.phpで受け取れていることが確認できます。

リダイレクトについては以上です!