[PHP]$_POSTと$_GETの違い

超初歩的かもしれませんが、$_POSTと$_GETの違いを超簡単に。。。

なんかこういうのもたまには書くのもいいかなぁと思ってポストです。

そもそもPHPでは$_****が結構あります。

$_SESSIONや、$_GLOBALや、$_REQUESTや、$_SERVERなどなど。

これらは読んで字のごとくですが、PHP初めて間もない方達はおそらく$_POTSと$_GETは何がちがうんだああああと思う方もいらっしゃるかと思います。(自分が最初そうでした)

さて、これらの違いですが、「送信するデータを隠して送信するか、見せて送信するか」の違いがあります。(厳密にいうともっと別な違いがありそうですが。。。)

ほいじゃ、それはどうやって設定するの?といいますと、「formタグ」の属性に「method」というのがあります。

こいつを設定する事で通信手段を変える事が出来ます。

ただ、これは「post」か「get」しか付与出来ません。

隠してとか隠さないとかいうと余計わからなくなると思いますので、以下の画像を。

最初は getで送信した場合の例からです。

このようにアドレスバーにいろんな情報がみえてる状態が「getメソッドでデータを送信」していることになります。

またpost通信はというと、

この画像のように、確認画面などに北野にアドレスバーにファイル名など以外が入っていません。

こんな時は「post通信」で送信していることになります。

それじゃぁ具体的な使いわけは?となりますが、postで送信する場合は基本的に大事な情報(個人情報だとかクレカの番号{クレカなどの番号はもっと別な方法でセキュアに通信します}など)です。

postで送信する事によって、URLを直接たたかれて不正なDBのデータを抜かれる(クラッキング)などの被害が減ります。

じゃぁpostだけでいいじゃん!と思うかもしれませんが、そうもいきません。

postで送信する場合は「hiddenタグ」などを使ってデータを送信するため、特に何でも無いところでPOSTを使って送信するのは手間にもなりますし、はき出すHTMLのファイルサイズも肥大化しがちになります。

そういった時にはやはり$_GET(GET)で通信を行い、HTMLのファイルサイズ肥大化を抑制したり、するのがいいかもしれません。

最近は個人情報保護なんちゃらとかいうやつでお問い合わせフォームがセキュア(SSL)になっているところがあります。

Webはなんだか肥大化しすぎた感じがありますね。。。

でも、可能性は遙かに多いWebなので自分はプログラムやっててよかったなぁとか最近思います。

ちなみにクレカの番号などを送信する場合は必ずセキュアな環境などで行ってください。

POST通信でもHTTPをのぞかれる事は日本でも多々起こっているみたいなので十分注意してください。

やっぱり俺はプログラムが好きだ。とかなんとかwwww