【PHP】$_POST配列のフォーム毎の取得方法まとめ

2019年12月19日

PHPでフォームでPOSTやGET送信する時に、受け取る$_POST、$_GETの配列がどういった形で取得されているか、各種フォーム部品毎に仕様をまとめました。

入力例はすべてPOST送信を行った場合の例です。
GET送信でも$_GETに入る配列の形式は同じです。

テキストボックス・テキストエリア

テキストボックスとテキストエリアのポスト送信は、各フォームに付けたname属性が$_POSTのキーとなって取得されます。

formタグで囲われている限り、空白でも取得の対象となります。

なので、入力の有無の判定を行う場合はif(isset($_POST[‘test’]))ではなく、if($_POST[‘test’])などで行うのが良いでしょう。
そもそも送信されかどうかの判定はissetが適しています。

<form action="test.php" method="post">
    <p>名前1</p>
    <input type="text" name="text1">
    <p>名前2</p>
    <input type="text" name="text2">
    <p>名前3</p>
    <input type="text" name="text3">
    <p>プロフィール</p>
    <textarea name="textarea"></textarea>
    <input type="submit" value="送信する">
</form>
※入力例

名前1

名前2

名前3

プロフィール

test.phpにPOSTされた$_POSTの中身
Array
(
    [text1] => 田中太郎
    [text2] => 
    [text3] => 山田花子
    [textarea] => こんにちは。
よろしくお願いいたします。
)

セレクトボックス

セレクトボックスは、select要素にname属性を設定して、選択されたoption valueの中身が取得内容となります。

<form action="test.php" method="post">
    <p>性別</p>
    <select name="gender">
        <option value="male">男性</option>
        <option value="female">女性</option>
    </select>
    <p>出身</p>
    <select name="pref">
        <option value="tokyo">東京</option>
        <option value="nagoya">名古屋</option>
        <option value="osaka">大阪</option>
    </select>
    <input type="submit" value="送信する">
</form>
※入力例

性別

出身

test.phpにPOSTされた$_POSTの中身
Array
(
    [gender] => female
    [pref] => nagoya
)

ラジオボタン

ラジオボタンもセレクトボックスとほぼ同じです。

同name属性の中から選択されているものを取得対象とします。

<form action="test.php" method="post">
    <p>性別</p>
    <input type="radio" name="gender" value="male"> 男性
    <input type="radio" name="gender" value="female"> 女性
    <p>出身</p>
    <input type="radio" name="pref" value="tokyo"> 東京
    <input type="radio" name="pref" value="nagoya"> 名古屋
    <input type="radio" name="pref" value="osaka"> 大阪
    <input type="submit" value="送信する">
</form>
※入力例

性別

男性 女性

出身

東京 名古屋 大阪
test.phpにPOSTされた$_POSTの中身
Array
(
    [gender] => female
    [pref] => nagoya
)

チェックボックス

チェックボックスは、主に複数の選択が行われる項目に対して使用されます。
(必ず1つしか選ばせたくない場合はセレクトボックスまたはラジオボタンのほうが良い)

ただし、同name属性を複数設けても、値として取得されるのは最後の要素のみです。

そのため、チェックされた値をすべて受け取りたい場合は、name属性の最後に[]を付けて、$_POSTで多次元配列として受け取る方法がオススメです。

<form action="test.php" method="post">
    <p>趣味1</p>
    <input type="checkbox" name="check1" value="sports"> スポーツ<br>
    <input type="checkbox" name="check1" value="reading"> 読書<br>
    <input type="checkbox" name="check1" value="movie"> 映画<br>
    <input type="checkbox" name="check1" value="pc"> パソコン<br>
    <input type="checkbox" name="check1" value="shopping"> ショッピング
    <p>趣味2【配列パターン】</p>
    <input type="checkbox" name="check2[]" value="sports"> スポーツ<br>
    <input type="checkbox" name="check2[]" value="reading"> 読書<br>
    <input type="checkbox" name="check2[]" value="movie"> 映画<br>
    <input type="checkbox" name="check2[]" value="pc"> パソコン<br>
    <input type="checkbox" name="check2[]" value="shopping"> ショッピング
    <input type="submit" value="送信する">
</form>
※入力例

趣味1

スポーツ
読書
映画
パソコン
ショッピング

趣味2【配列パターン】

スポーツ
読書
映画
パソコン
ショッピング
test.phpにPOSTされた$_POSTの中身
Array
(
    [check1] => shopping
    [check2] => Array
        (
            [0] => reading
            [1] => movie
            [2] => shopping
        )

)

input type=”hidden”

<input type="hidden">要素は、画面には表示されませんが、form送信時に入っているvalue値を受け取ることが出来ます。

<form action="test.php" method="post">
    <input type="hidden" name="hidden1" value="てすと">
    <input type="submit" value="送信する">
</form>
(inputのhiddenは画面上に表示されません。)
test.phpにPOSTされた$_POSTの中身
Array
(
    [hidden1] => てすと
)

各種フォームの仕様を把握して、必要なフォーム部品を配置していきましょう。

なお、ファイル送信のためのアップロードについては別ページで解説しております。

PHPでファイルをアップロードする方法【サンプルコードで解説】

以上、$_POST配列のフォーム毎の取得方法まとめ、でした。

PHP