【初心者向け】PHPのデータの送信について解説!送信方法の種類や構文をわかりやすく説明します

こんにちは、大学院でIT系の研究を専攻している、ひらりんです。

PHPはサーバーサイドで動く言語で、世界中の多くのWebサイトがPHPによって記述されています。一括してコンパイルするのではなく、実行時に一行ずつコンパイルされることから、随時コードを確認できるのも、初心者が取り掛かりやすい理由のひとつです。

本記事では、PHPのデータの送信方法ついて説明します。PHPを用いたプログラムにおいて、Webブラウザのフォームに入力されたデータなどをサーバに送る場面があります。しかし、他の言語ではあまりデータ送信をする機会もなく、原理の理解があやふやだったりしますよね。

PHPのデータの送信方法について、基本構文だけでなく実際のコードを用いた解説もするので、PHPの学習を始めた方やプログラムを書く予定の人はぜひ読んでみてください!

PHPの送信の種類

まずは、PHPのデータの送信・受け取りの種類について確認しましょう。PHPでは、Web等のフォームからのデータの受け取りには、POSTとGETの2種類があります。それぞれ、目的と用途に分けて使い分けられます。

クライアントとサーバがデータのやり取りをする際に、一般的にHTTPというプロトコルが用いられます。POSTやGETはHTTPメソッドのひとつで、それぞれ仕様が取り決められています。この仕様を理解し、自分が作りたい機能やサービスに応じて、セキュリティなどを適したものにすることで、高品質な製品を作ることができます、

では、POSTとGETについて簡単に見ていきましょう。

POST送信とは?

POSTはリソースを実装している機能に沿った処理をする方式です。POST送信は、URLからは判断できないデータを送信します。リクエスト内容をHTTP通信のボディ内に記述するため、URLを直接入力してもアクセスできず、ログインや登録などをして特定のページからのみアクセスできるようになっています。

データ量が多いときや、外部に漏らしたくない機密情報(パスワードやメールアドレスなど)を扱う際に適しています。また、特徴として、バイナリデータも送信できることが挙げられます。

GET送信とは?

GETはリソース内容を転送するようにリクエストする方式です。GET送信は、URLにパラメータを付与し、データを取得するために使われます。POST送信と異なり、GET送信URLだけで指定できるので、URLをブラウザに入力すればアクセスできるため、読み取り専用とも言えます。

また、GET送信はクライアント側からは、サーバの処理内容については分からないため、比較的安全です。しかし、GET送信はテキストデータしか送信できないため、長いデータや公開範囲を限定したいデータについては向いていません。

結局、POSTとGETの違いは?

POSTとGETの違いはその意味の通り、POSTはデータの送信するGETはデータを取得する、という違いです。

クライアント側はサーバ側のPHPにリクエストが来るとします。簡単に違いを例で示すと、「データが欲しい」という内容がGET送信、「データを送ります」という内容がPOST送信となります。

POST送信とGET送信は混同しやすいですが、この違いをはっきりさせて、目的や用途に応じて使い分けることが重要です!では、それぞれの通信方式の使い方について見ていきましょう。

POST送信でデータを送受信する方法

まずは、ログイン情報などを送信するのに適しているPOST送信について確認しましょう。

基本構文

POST送信方法

POST送信には、色々な書き方があります。ここでは、最も一般的なbody内のformタグによって送信する方法を取り上げます。以下のような構文を用いることで、内容を送信できます。

formタグ内の記述にて、POST送信であることを指定します。methodで送信方法を指定することができるので、POST送信の場合は「method=”POST”」とします。また、タグ内のactionにて送信先のPHPプログラム名を指定し、nameは適宜必要であれば指定してください。

POST送信のデータ受け取り方

POST送信のデータ取得法についても色々な種類がありますが、ここではPHPで定義されている変数の1つであるポスト変数を用いた方法を説明します。

ポスト変数は、POST送信の際にactionにて指定されたプログラム内において、body内にこのように書くことでデータを受信することができます。

習うより慣れろ、ということで実際にプログラムを見てみましょう。

実践コード例

ここでは、基本構文で説明した方法を用いて、POST送信にてデータを送受信するプログラム例を解説します。なお、データを送信する側のプログラムをpost_send.php、受信する側をpost_receive.phpというプログラム名にしました。

まずは、post_send.phpです。

上から順にチェックしましょう。1行目のformタグにて、POST送信ですよとmethodを指定し、データの送信先のpost_receive.phpをactionにて指定しています。2行目は、inputタグを用いて、フォームを作成しています。typeを”text”とすることで、1行の入力フィールドが作成され、ここで入力されたデータを”data”としています。

3行目で、inputタグを用いてtypeを”submit”と指定し、valueを”送信”とすることで、以下のような良く見かける送信ボタンを作成しています。このボタンをクリックしたら、フォーム内のデータがpost_receive.phpに送られる仕組みになっています。

では、POST送信にて送られたデータを受け取るpost_receive.phpプログラムについて確認しましょう。

このように、ポスト変数を用いることで、データを受け取ることができます。$_POST内の括弧に、先ほどinputタグでフォームに入力された内容につけた名前である”data”と記述することで、フォームに入力された内容を、別プログラムであるpost_receive.php内で受信します。

inputタグのtype属性を変更することで、ラジオボタンやチェックボックスの選択結果などを受け取ることも可能です!

GET送信でデータを送受信する方法

GET送信についても確認しましょう。GET送信の特徴として、URLの末尾に「?送信内容」が追加されます。そのため、URLを見れば何のデータを送信しているのか確認できます。

基本構文

GET送信方法

URLに、” ? “を付け加え、その直後に「名前=値」とすることでGET送信にてデータを送信することができます。プログラムでは、以下のように記述します。

POST送信では、methodで”POST”と指定しましたが、GET送信はmethodを指定する必要がありません。他の処理内容はPOST送信と同様です。

GET送信のデータ受け取り方

GET送信のデータの受け取り方は、以下のようにゲット変数を用いることで可能です。

POSTがGETに変わっただけということが確認できますね。では、GET送信の実際のプログラム例についても見てみましょう。

実践コード例

POST送信と同様に、ここではデータを送信するプログラムをget_send.php、受信するプログラムをget_receive.phpとします。

get_send.phpは次のようになります。

GET送信では、先述したようにmethodを指定する必要がありません。そのため、ここで表示されるフォームに入力されたデータは、送信ボタンがクリックされるとGET送信にてget_receive.phpに送信されます。

一方で、get_receive.phpは次のようになります。

このように、$_GET[“data”]とすることで、get_send.phpよりGET送信されたデータを受信することができます。

この他にも、データの送受信方法には様々な種類があるので、必要に応じて使い分けてください!

まとめ

いかがでしたでしょうか?今回は、PHPのデータの送信方法について、簡単なメソッドを用いた方法を中心に説明しました。

PHPのデータ送信について、POST送信やGET送信の違いを理解し、スムーズに使えるようになると、プログラムの汎用性が広がります!ぜひ理解を深めて、Webサービス作成やシステム構築に活かしてください。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?