【連載】春の新入社員におくるPHP超入門 ~ その6:HTTP/HTTPS – GET・POST –

◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【6/19開催】Kong Community Japan Meetup #4
本イベントでは、Kong Inc. のVP of ProductであるReza Shafii氏もプレゼンターとして参加。当社からはアーキテクト マネージャーの槌野の登壇が決定!参加無料です!!
https://column.api-ecosystem.sios.jp/connect/kong/1081/

【6/21開催】開発者目線でのSBOMとの向き合い方
SBOMの導入から開発者がSBOMの作成・管理を自動で行っていくための方法(デモ)を紹介します。SBOMを全く知らない人から、開発との統合までを紹介するので様々なレベルの方に学びがあるライブとなる予定です!
https://tech-lab.connpass.com/event/321422/

【7/19開催】現場で役立つAzure神小技10+α 〜生成AI,RAG,コスト削減など旬な技術満載のLT大会〜
Azureの最新技術や実用的な小技を紹介する特別なライトニングトーク大会を開催します!
https://tech-lab.connpass.com/event/319077/

【7/26開催】最適なIaCツールを選ぼう
プロジェクトでのツール選びに困らないための重要な観点をご説明します!
https://tech-lab.connpass.com/event/319532/

こんにちは。サイオステクノロジーの川田です。

PHPを始めてみよう!触ってみよう!と考えている方向けへのPHP超入門をお届けしております。

今回は第6回になります。

使用するツールはこちらです。
環境の詳細についてはアジェンダの「1.環境構築」へ(/・ω・)/

  • Visual Studio Code
    拡張機能:Remote Development

  • Docker

HTTPについて

HTTPとはHyperText Transfer Protocolの略です。

ブラウザにURLを入力すると表示したいWebページが表示されますよね。
HTTPとはWebページを表示する際に使う通信プロトコルです。

アドレスバーに「https://…」はHTTP通信していることになります。

HTTPSについて

HTTPSとはHyperText Transfer Protocol Secureの略です。
HTTPリクエストやレスポンスの内容が暗号化されます。

HTTPに「S」がつきました。そうです。Secureの「S」です。
Secureを調べてみると「安全」と出てきます。HTTPに比べてセキュアな通信というわけですね。

具体的にHTTPとHTTPSの違いはなにか!?見ていきましょう。

HTPPとHTTPSの違い

違いは通信が暗号化されているかということになります。
SSLが導入されているサイトは送信データが暗号化され、ブラウザに「鍵マーク」が表示されます。

HTTPSは安全なの?

暗号化されているなら安全じゃん!」と思いますよね?
HTTPよりは安全というだけで、100%安全というわけではありません。

どういうことなのか!!!

もしあなたがアクセスしたWebサイトが偽物だったら、、、、、、?
よくニュースで詐欺サイトという単語を耳にしたことはありませんか?

 

①ユーザーに偽物のURLを付けてメールを送ります。
②「カード情報を確認しよう」とURLをクリックします。
③偽サイトと気づかず、IDとPasswordを入力してログインをしてしまいます。
④ログイン情報が盗まれてしまいました><

「えー騙されるかな?」と思うかもしれません。
例えば本物のURL「https://www.xxxx.com/」
偽物は「https://www.xxxx-xyz.com/」
偽物には「xyz」がついています。本物のURLと微妙に違うこと多いので注意が必要です!

またWebサイトも本物そっくりに作られています。
未納料金の請求やアカウントロックなどについてメールが来ると焦って確認しようと思いますよね><

まずは本物かどうかURLをしっかり確認することが大事ですね!
話が逸れてしまいました。以上がHTTPやHTTPSの簡単な説明でした。

GETとPOSTについて

Webサイトからの要求には「GET」と「POST」というメソッドがあります。
用途によってGETやPOSTを使い分ける必要があります。
この2つを説明していきます。

GET

今皆さんがWebサイトを閲覧するとき、検索するときもGetを利用してサーバーにリクエスト送信しています。
Google検索もGetを用いられています。
送信データはURLの最後に「?[パラメーター名]=値」と記述します。

値が複数ある場合は「&」で繋げることができます。
例:/xxx.php?[パラメーター名1]=値1&[パラメーター名2]=値2

Getを扱う際に注意点があります。

  • 他人がURLを見ると送信データが丸見え

例えばパラメーターにパスワードを指定した場合、情報が丸見えになってしまいます。
例:/xxx.php?password=123456
重要な情報はPOST送信にしましょう。

  • urldecode() 関数を介して渡される

引数のエンコード文字「 %##」 をデコードします。 (プラス記号 (‘+’) は、スペース文字にデコードします。)

GET送信してみよう!

  • index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>入力フォーム</title>
  </head>
  <body>
    <h1>入力フォーム</h1>
    <form action="/index.php" method="get">
        <p>お名前:<input type="text" name="name"></p>
        <p>メールアドレス:<input type="text" name="mail"></p>
        <input type="submit">
    </form>
  </body>
</html>

methodをgetにするとGET送信になります。

  • indexphp
<?php
var_dump(htmlspecialchars($_GET['name']));

データを受け取る場合はスーパーグローバル変数「☞$_GET」を使います。
XSS対策のためhtmlspecialcharsを使用しています。XSSについて分からない方は☞こちらをクリック

では入力フォームに入力してみます。
名前:山田太郎
メールアドレス:xxxxxxxx.com

「送信」ボタンをクリックします。

nameの値が出力され、URLが&繋ぎで表示されていることがわかります。
https://localhost:8080/index.php?name=山田太郎&mail=xxxxxxxx.com

URLを直接叩いても画面は同じ出力結果になります。

POST

  • パラメータが見えづらい

わざと調べない限りパラメータの内容は見えません。

  • 文字数制限がない

文字数制限を気にせず使用することができます。
GETはブラウザによって変わりますが、使える文字数が制限されております。

全部POSTではだめなの?

だったら全部POSTでも良いのでは!?」と思う方もいると思います。

例えば「https://wwww.xxxx.com/archives/id=2333」という記事のIDをパラメータとして渡しています。
GETで受け取っているため「id=2333」の記事IDを直接表示できますし、複数人に共有することもできます。

 

これがPOSTになったらどうでしょう?
ページトップにいって、一から記事を探さなくてはなりません。
それってすごーーーくめんどくさくないですか?
記事をブックマークや共有できるのもGETのおかげということですね。

どういうときにPOSTを使うのか、GETを使うのか使い分けはとても重要です!

POST送信してみよう!

  • index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>入力フォーム</title>
  </head>
  <body>
    <h1>入力フォーム</h1>
    <form action="/index.php" method="post">
        <p>お名前:<input type="text" name="name"></p>
        <p>メールアドレス:<input type="text" name="mail"></p>
        <input type="submit">
    </form>
  </body>
</html>

9行目のmethodをget⇒postに修正しただけです。

  • indexphp
<?php
var_dump(htmlspecialchars($_POST['name']));

データを受け取る場合はスーパーグローバル変数「☞$_POST」を使います。

では先ほどと同様入力フォームに入力してみます。
名前:山田太郎
メールアドレス:xxxxxxxx.com

「送信」ボタンをクリックします。

GETとの違い分かりましたか?
出力内容は変わりませんが、URLに注目です!パラメータがついていませんよね。
文字数が多いような項目、画像データや重要な情報はPOSTが適しています。

まとめ

今回はHTTPとHTTPSの違いやGET、POST送信についてご説明しました。

アバター画像
About kawada 25 Articles
Webアプリケーション開発を行っており、プログラミング初心者向けの記事や動画編集に関する内容を中心とした記事を執筆しています。
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる