この記事にはプロモーションが含まれています。

【初心者向け】HTTPリクエストとは?GETとPOSTの意味【PHP】

【初心者向け】HTTPリクエストとは?GETとPOSTの意味【PHP】

ケケンタ

PHPを勉強しているとHTTPリクエストとかGETとかPOSTって出てくるけど、なんだかよく分からない……。

今回はこのようなお悩みをお持ちの方に向けてHTTPリクエストについて解説をしていきます。

この記事で分かること
  • HTTPリクエストとは?
  • そもそもHTTPとは?
  • GETとPOSTとは?
  • GETとPOSTのプログラミング(PHP)での使い方
ケケンタ

PHPでWebアプリを開発するならHTTPリクエストの理解やGET、POSTを扱えるようになることは必須条件です。
この記事が少しでも理解の一助となれば幸いです。

目次

Web制作を仕事にしたいなら

こちらの記事で

Web制作コース独学プラン

についてご紹介しています。

 ̄ ̄ ̄

「仕事が忙しい」、「すぐに欲しい商品がある」という方、必見のサービス

 Amazon Prime 

by Amazon

日時指定便が「無料」で使えるので不在で商品を受け取れないという心配が無くなる

最短で注文した「翌日」に商品が届くので欲しいものがすぐ手に入る 
※ご注文の時間帯やお住まいの地域によります。

Amazonプライムの無料体験は「何度でも」利用可能

Amazonプライムの無料体験を何度も利用する方法

  • Amazonのカート画面で表示される「Amazon Primeの無料体験の案内」をクリック
  • 会員の自動更新を解除しておく=期限が来たら自動解約
  • 1~3ヶ月ぐらいするとAmazonのカート画面再度無料体験の案内が表示される

商品をカートに入れ、カート画面に行ったときに「無料体験の案内」が表示されていれば
1ヶ月間の無料体験を受け取ることが可能です。

ケケンタ

僕自身、過去に少なくとも3回は無料体験を利用しています。

※条件は不明ですが、解約後に一定期間が経過すると、再び「Amazon Prime無料体験の案内」が表示され、再度利用することが可能です。

HTTPリクエストとは?

HTTPリクエストとは、簡単に言うと

クライアントからサーバーに対する何らかの要求(リクエスト)のこと

です。

身近な例では、Google検索で表示された検索結果のリンクを押下したときの動きがまさにそれです。

Google検索で表示された検索結果のリンクを押下したときの動き
  • Goole検索をする
  • 結果一覧が表示される
  • いずれかのリンクをクリックする → このときサーバーにHTTPリクエストが飛んでいる
  • (結果が返ってきて)Webページが表示される

つまり、皆さんがこのブログ記事を訪れる際にも「『https://kekenta-it-blog.com/http-request-get-post/』のページを下さい」と知らず知らずサーバーに要求(HTTPリクエスト)していたということです。

そして、この要求(HTTPリクエスト)に対して、

  • サーバーはこの記事のページ情報を返し
  • ブラウザが受け取った記事のページ情報を表示している

という流れになっています。

HTTPとは?

ところで、先ほどからずっと登場しているHTTPとは何を意味しているのでしょうか?

HTTPというのは、プロトコルの1つです。

ケケンタ

ぷろとこる……?

馴染みのない用語かもしれませんが、プロトコルとは簡単に言うと

ITの世界で定められている「取り決め」のこと

です。

例えば、「ブラウザさんとサーバーさんはこんな風にしてやり取りをしてください」という風に予めルールが定められています。

このルールのことをIT専門用語でプロトコルと呼びます。

現実世界に例えるなら、手紙を郵送するときの流れが挙げられます。

手紙を郵送するときの流れ(ルール)
  • 手紙を書く
  • 封筒に宛名と自分の住所を書く
  • 切手を貼る
  • ポストに投函する
  • 郵便屋さんが手紙を回収する
  • 適切な手続きにより手紙が宛先へと届けられる

このように、現実世界で手紙を出す場合は、ある定められたルールに従って手順を踏みます。

ブラウザとサーバー間でも「こんな風にやり取りをして」、と予めルールが定められているのです。

このルールのことをプロトコルと言い、HTTPはその内の1つなのです。

HTTPとは、ブラウザとサーバーとの間でやり取りをする際のルールのこと

そして、本題であるHTTPリクエストとは、HTTPの内、ブラウザからサーバーへ送信するリクエストのことを指しています。

HTTPリクエストとHTTPレスポンス

たったいま、HTTPリクエストは、HTTPでのやり取りの内、ブラウザからサーバーへのリクエストのことを指すとご説明しました。

一方、サーバーからブラウザへ返ってくる回答をHTTPレスポンスと呼びます。

HTTPレスポンスによって得られるのが、ブラウザに表示されるWebサイトなどです。

ケケンタ

HTTPリクエストとHTTPレスポンスは2つで1つの概念ですので、この場で簡単にご紹介させて頂きました。

HTTPリクエストの種類~GETとPOST~

HTTPリクエストにはいくつか種類があります。

その内、最も基本的なHTTPリクエストがGETPOSTです。

GETとPOSTとは?
GET

URLで指定したページを要求するために使用するHTTPリクエスト

POST

クライアントからサーバーへデータを送信するために使用するHTTPリクエスト

それぞれ役割は明確に異なります。

しかし、初心者の方にとってややこしいのが、プログラミングにおいて、実はどちらを使用しても望んだ機能を実現することが可能という点です。

例えば、ユーザーがフォームに入力したデータをデータベースに保存したい場合、フォームの入力内容をHTTPリクエストで送信する必要があります。

しかし、GETとPOSTのどちらを使用してもこの機能は実装できてしまうのです。

ケケンタ

初心者の方は最初の内は使い分けが難しいと感じるかもしれません。

GETとPOSTの具体的な違いは以下の通りです。

GETPOST
使用用途の例検索機能フォーム情報をDBに登録
DB上のデータを削除
既存データの編集
リクエスト情報の可視可視
※URLの後ろに情報が付与される
不可視
※HTTPリクエストのボディ部分に記載。
ツールを使用することで情報を見れるため、安全性を担保するならHTTPS通信などによる暗号化が必要
GETとPOSTの具体的な違い

大きな違いは、リクエスト情報が表面上から見えるかどうかという点です。

GETの場合、URLの後ろに情報が付与される形になるため、ユーザーが普通にWebサイトを利用していても情報が見えてしまいます。

一方のPOSTは、HTTPリクエストのボディ部分、つまり内部的な部分に情報が付与されるため、表面からは見えません。

しかし、何らかのツールを利用すると簡単に見れてしまうため、セキュリティ上の安全性を考えるならHTTPS通信などによって情報そのものを暗号化する必要があります。

GETとPOSTの使い分けのポイントは、HTTPリクエストで送信する情報の機密性にあります。

その情報が、例えば単なる検索キーワードなら表面上にデータが見えても問題ないためGETが候補に挙がります。
一方、ユーザー情報など機密性の高い情報を扱う場合は、基本的にはデータが表面上に見えないPOSTを利用するのが適切です。

GETとPOSTのプログラミング例

本章ではGETとPOSTを実際にPHPで使用する場合の例をお見せします。

実装の際のご参考になれば幸いです。

GET

GETを使用する場合は、formタグのmethod属性に「get(GET)」を指定します。

また、GET送信された値を取得する際はスーパーグローバル変数の$_GETを使用します。

以下は「usernameをGET送信し、PHPの処理で出力する処理」です。

<form action="kekenta-sample.php" method="get">
  名前:<input type="text" name="username" value=""><br>
  <input type="submit" value="送信">
</form>

<?php 
//$_GET['username']が存在していれば 
if( isset( $_GET['username'] ) && $_GET['username'] != '' ){ 
  echo "あなたのユーザー名は:" . $_GET['username'] . "です。"; 
} 
?>

ちなみに、上記のユーザ名が例えばkekentaだった場合、遷移先のページではURLが以下の表示になります。

https://kekenta-sample.php?username=kekenta

今回はユーザーの入力値を利用しているためこの書き方を使用することはできませんが、GET送信を行いたい場合は

<a href=”https://kekenta-sample?キー名①=値①,キー名②=値②  ……  ”>

という形でリンクに直接記述することも可能です。

POST

POSTを使用する場合は、formタグのmethod属性に「post(POST)」を指定します。

また、POST送信された値を取得する際はスーパーグローバル変数の$_POSTを使用します。

以下は「usernameをPOST送信し、PHPの処理で出力する処理」です。

<form action="kekenta-sample.php" method="post">
  名前:<input type="text" name="username" value=""><br> 
  <input type="submit" value="送信">
</form>

<?php //$_POST['username']が存在していれば 
if( isset( $_POST['username'] ) && $_POST['username'] != '' ){ 
    echo "あなたのユーザー名は:" . $_POST['username'] . "です。"; 
} 
?>

ちなみに、POSTの場合も実はGETのときと同じようにURLにキー=値という形で情報を埋め込むことも可能です。

それに加えて、POSTの場合はHTTPリクエストのボディ部分(表面からは見えない部分)に情報を埋め込んで送信することが可能です。

GETとPOSTを適切に使い分けることが大切

ここまでHTTPリクエストやその代表であるGETとPOSTについて解説をしてきました。

HTTPとは、ブラウザとサーバーとの間でやり取りをする際のルール(プロトコル)のこと

この記事のまとめ
HTTP

ブラウザとサーバーとの間でやり取りをする際のルール(プロトコル)

HTTPリクエスト

HTTPの内、ブラウザからサーバーへ送信するリクエスト

GET

URLで指定したページを要求するために使用するHTTPリクエスト
機密性が低い情報の送信に適している

POST

クライアントからサーバーへデータを送信するために使用するHTTPリクエスト
機密性が高い情報の送信に適している

ケケンタ

前章のプログラミング例をご覧いただきお分かりいただけたかと思いますが、GETでもPOSTでも機能的には全く同じものを実現することが可能です。

しかし、GETとPOSTには明確な違いあり、誤った方を使用するとセキュリティリスクも高まります。

扱う情報の機密性をきちんと考慮し、適切な方を使用することが大切です。

ケケンタ

なお、実際のアプリ開発でGETやPOSTが使用されている様子をご覧になりたい方は、以下の掲示板アプリ解説の記事内のコードが参考になるかと思います。

それでは最後までお読みいただきありがとうございました。

また別の記事でお会いできれば光栄です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次