初心者向け。PHPのPOSTとGET($_POSTと$_GET)の違いと使い分け

1120 回閲覧されました

みなさんこんにちは、jonioです。

ProgateのPHPを勉強した時にPOSTとGETが登場しますが違いが分からず使っていました。

最近PHPを勉強していた時にPOSTとGETの違いと使い分けの記事があって納得できたので内容を忘れないように自分へのメモです。

それではメモの開始です。

post・getで情報を渡す

formタグにmethod=”post”・method=”get”と書くことでファイル間での情報の受け渡しができます。

post・getを使った時の情報の受け取り方

「$_POST[‘〜’]」「$_GET[‘〜’]」で渡した情報を受け取ることができます。

こんな感じで使い方が見た目同じだけど情報を受け取る時と使い分けが異なります。

getの性質

  • URLにパラメーターが付属する
  • 文字数に制限がある
  • 保存・共有・編集に便利

それぞれ説明します。

URLにパラメーターが付属する

GETメソッドで情報を送ると、そのパラメータのキーと値がURLに付加されます

↓のコードを見てください。

7行目の「?information= 」ですがinformationが2行目の「name=”information”」のinformationでがフォーム(inputタグ)に入力した情報です。

2以上の情報を送る場合のURLですが2つの情報の間に「&」が付きます。

文字数制限

URLにパラメーターを付けるのが原因ですが文字数に制限があり最も文字数が少ないブラウザはIEで、最大でも2048文字までしか使えません。(でも2022年の6月16日でIEは終了になります

URLを保存・共有・編集に便利

GETを使う場合URLにパラメーターが全て記載されてパラメータごとURLを保存・共有・編集でるので便利です

またURLにパラメーターがつくのでフォームタグを使わなくてaタグなどでも該当の情報にアクセスできます。

aタグを使う場合は例えば↓みたいなコードでできます。

コードにはGETが入っていませんが別の所でGETを経由しています。

getを使う時の注意点

getを使うとURLにパラメーターが付属するので他人に情報が見える事になりセキュリティ的に危険です。

だから大事な情報や個人情報を送る場合は今から説明するpostを使った方がいいです。

postの性質

  • パラメータが見えにくい
  • 文字数制限がない
  • セキュリティ的にGETよりは安心できる

それぞれ説明します。

パラメーターが見えにくい

URLにパラメーターが付属されないのでURLからはパラメーターが分かりません。

デベロッパーツールを使えばキーは分かりますがわざわざそうしてまで見る人はいないだろうし値は表示されないので分かりません。

文字数制限がない

URLにパラメーターが付属しないので文字数に制限がないです。

セキュリティ的にGETよりは安心できる

postで送られたパラメーターが第三者に基本的に見られることがないのでパラメーターが全て付属するgetよりは安全と言えます。

最後にgetとpostの使い分けです。

getとpostの使い分け

getとpostの違いを説明しましたが説明の内容から以下の様に考える事ができます。

  • get:情報を取得する時
  • post:情報を登録する時

情報を取得する時はURLのパラメーターが見えた方がいいのでgetを使った方がいいです。

例として検索フォームです。

情報を登録する時は第三者にURLのパラメーターを見られない方がいいのでpostを使った方がいいです。

例としてログインフォーム、メールフォームなどです。