ページ 11

POSTとGETの疑問

Posted: 2012年4月29日(日) 20:04
by h24i17
少し前にとあるサイトの掲示板を見ていました。
今ではもうそのサイトは見れないので、同じソースは書けないのですが、書き込みフォームの部分をこんなもんだと思ってください

コード:

<form action="kakikomi.cgi" method="post">
<input type="text" name="message">
<input type="submit" value="書き込み">
</form>
例えばこのサイトをbbs.example.comだとします。

前置きが長くなりましたがここからが本題です。
過去、このサイトを見ていた時にやったことなのですが
ページに表示されているtextboxに"hello"と入れて、書き込みボタンを押した場合と、
http://bbs.example.com/kakikomi.cgi?message=hello に接続した時は全く同じ挙動を示していました。

私はこれを当たり前のことだと思っていたのですが、PHPを学んでこれが当たり前のことではないことを知りました。
PHPの場合はPOSTで突っ込んだ値は$_POST変数で受け取ります、GETの値は受け取れないはずです。
でも、このサイトはPOSTで入れようがGETで入れようがデータを取得していてくれました。

これは何故なのでしょうか?

Re: POSTとGETの疑問

Posted: 2012年4月29日(日) 20:05
by h2so5
単純に、メソッドがPOSTだったら$_POSTから、GETだったら$_GETから受け取っているだけだと思います。

Re: POSTとGETの疑問

Posted: 2012年4月29日(日) 20:07
by h24i17
>h2so5さん
早速の返信ありがとうございます。
POSTでデータが送られていない場合はGETでデータが来ていないか調べるといった場合分けが出来るということなのでしょうか?

Re: POSTとGETの疑問

Posted: 2012年4月29日(日) 20:16
by h2so5
PHPの場合はこんな風に場合分けができます。

コード:

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {

}
else if ( $_SERVER['REQUEST_METHOD'] == 'GET' ) {

}

コード:

if ( isset($_POST['data']) ) {

}
else if ( isset($_GET['data']) ) {

}

Re: POSTとGETの疑問

Posted: 2012年4月29日(日) 20:26
by h24i17
>h2so5さん
例を二つも出して頂いて、丁寧な解説ありがとうございました。
そのような方法があるなんて全然知りませんでした、こればっかりは完全に私の勉強不足でした。

これで解決にさせて頂きます。
ありがとうございます。