【PHP】GETとPOSTのデータを同時に送信する方法

  • 2020.03.16
  • PHP
【PHP】GETとPOSTのデータを同時に送信する方法

formからデータを送る方法にはGETとPOSTの2種類があります。 基本的にはその2種類のどちらかしか使わないが、formのaction属性に指定するURLを書き換えることで、GETとPOSTの両方を同時に送ることもできます。

Advertisement

GETとPOSTのデータを同時に送信する際の記述例

記述例は以下の通り

<form action = "?test=1234&name=Fermat" method = "POST">
    <table>
        <caption>GETとPOSTを同時送信</caption>
        <tbody>
            <tr><th>年齢[age]</th><td><input type = "text" name = "age" value = "45"></td></tr>
            <tr><th>名前[name]</th><td><input type = "text" name = "name" value = "Gauss"></td></tr>
        </tbody>
    </table>
    <input type = "submit" value = "送信">
</form>

このように書くと、action属性に書いたtestとnameの値をGETで、inputタグに書いたageとnameの値をPOSTで送ることができます。

取得結果は以下の通り

$_GETと$_POSTの取得結果

$_GET = Array
(
    [test] => 1234
    [name] => Fermat
)
$_POST = Array
(
    [age] => 45
    [name] => Gauss
)

この例ではGETとPOSTのどちらにも同じ名前のnameという値があります。 $_REQUESTでは同じ名前の値があるとき、デフォルトでは$_GETよりも$_POSTの値が優先され、以下のような値になります。

$_REQUESTの取得結果

$_REQUEST = Array
(
    [test] => 1234
    [name] => Gauss
    [age] => 45
)

もし、$_COOKIEにも同じ値があるとその値は$_POSTよりも優先されます。

この優先順位の設定は、request_order(もしくはvariables_order)で変更可能です。

ちなみに、action属性にGET用のデータを書いてもmethod=”GET”ではaction属性の値は送られず、inputタグなどの値のみが送られます。

Advertisement