GETとPOSTの違いについて
初めまして!今年新卒で入社した開発チームの長谷と申します。
今回はプログラム初心者向けにPHPで情報を受け渡すときに使われる「GET」と「POST」の違いについて解説していきたいと思います。
GETとPOSTとは?
入力フォームなどのデータをWebサーバーに受け渡すときに用いる方法のことをいいます。
GETの特徴
- データをURLの後に付与して送信する。
- URLにデータが書かれているため他者に入力したデータが丸見えになってしまう。
- URLは使用できる文字数が制限されていため(Internet Explorer のURLに使用できる最大文字数は最大2,048 文字)送ることのできるデータ量が制限される。
- テキストデータのみ送信可能(画像データなどバイナリデータはURLに書けないので送信不可)。
例:http://localhost/sample/confirm.php?name=%E5%B1%B1%E7%94%B0%E5%A4%AA%E9%83%8E&age=22
「?」はパラメータの始まりです。
「&」はパラメータの区切れ目です。
「=」は左側がGETの変数名で、右側が渡される値です。
渡される値が%E5%B1%B1%E7...となっているのは日本語が変換されているためです。(日本語はURLで使用できない)
POSTの特徴
- データがURLに付与されない。
- URLにデータが書かれないので他者にデータを見られることがない。
- データ量の制限なく送信可能。
- テキスト、バイナリどちらでも送信可能。
例:http://localhost/sample/confirm.php
GETとPOSTの使い分け
以下に当てはまる場合はPOSTを使うと良いでしょう。
データ量が多い場合
前述のように、Internet ExplorerではURLに使用できる最大文字数は最大2,048 文字であり、
GETの場合データをURLの後に付与して送信するため、送ることのできるデータ量が制限されます。
よってデータ量が多い場合はPOSTを使用してください。
秘匿情報を送る場合
メールアドレスやパスワードなど外部に知られたくない情報がデータの中にある場合、
GETだとURLの後にデータ情報が付与されるため他者に見られてしまいます。
よって秘匿情報を送る場合はPOSTを使用してください。
バイナリデータ送る場合
画像などのバイナリデータを送る場合はPOSTを使用してください。
終わりに
データをURLで共有したい場合、他者にデータが見られても問題ない場合はGETを使っても良いでしょう。
ですが基本的に個人情報の入力フォームや商品注文フォームなど個人情報が含まれている場合は必ずPOSTを使ってください。
以上です。