【PHP基礎】GETとPOST
■GETとPOST
前回の記事で出てきたGETとPOSTについて説明していきます。
どちらもHTMLからデータを送信する方法であり、記述自体は文字の違いだけなのですが、内部の処理が大きくことなります。
■使い分け
まず、まだ慣れていない方については、少し語弊はありますが、基本的にはPOSTを使うと考えてください。
POSTを使ってはいけない場面はあまりないのですが、GETを使用してはいけない場面はあるからです。
ただし、POSTでも実現できるけど、GETを使う方が便利だよ!という場面が存在します。
■なぜ使い分けるか
なぜ使い分ける必要があるのかというと、送信する際のデータの格納先が異なるからです。
GETの場合は、URLの後ろにくっつけて送信されます。
前回の記事のサンプルでabcと入力し送信ボタンを押すと、遷移先のページのURLは以下のようになります。(xammpを使用しhtdocs配下においた場合)
http://localhost/recieve.php?word=abc
通常のURLの後ろにまず?が付きます。
そのまた後ろにname属性の値=value属性の値というペアでデータが付きます。
もし複数のデータが送信させてきた場合は、&で区切られます。
POSTの場合はリクエストボディ内に格納されて送信されます。
要はGETで送信したらURLに送信データが載ってしまうわけですね。
もしログイン処理でユーザー名とパスワードをGETで送信してしまうと、次のページのURLでパスワードが見えてしまいます。
これはセキュリティ的によろしくないので、他人に見られてはいけないデータを送信する場合はGETを使用してはいけません。
一方でどんな場面だとGETの方が便利かというと、検索ワードが例として挙げられます。
検索ワードを入力して検索ボタンを押します。
すると検索結果の画面が表示されます。
その際にURLに検索ワードが載っていると、自分がどんなワードで検索したのかがわかりやすくなります。
POSTでも実現はできますが、送信されてきたデータがURLに見えた方がわかりやすいという場合にGETが使用されます。
またGETだと検索結果のページをブックマークすることが可能です。
他にも送信できる文字数が違ったり、リダイレクト時にデータを送信したい場合の実現性などの違いはありますが、まずは上記の違いを押さえてください。