【PHP入門】POST送信、GET送信する方法

フォームから入力したデータなどをサーバに送信するには、POST送信GET送信の2通りがあります。

この記事では

  • POSTで送信したデータを取得する方法
  • GETで送信したデータを取得する方法
  • 配列をPOSTで取得する方法
  • POSTでアップロードするサイズの設定方法
  • 外部サイトの情報を取得する方法

などの基本的な内容から、応用的な使い方についても解説します。今回はそんなPOST送信、GET送信について詳しく解説します!

POST送信する方法

POST送信とはHTTPの通信方式の1つです。

主にHTTPで作成されたフォームから入力したデータを、サーバに送信する方法のことを言います。POST送信は、入力した情報をbody要素に記述してリクエストを行います。

後述するGET送信はデータを送信する際に制限がありますが、POST送信の場合は制限は特にありません。

POSTで送信したデータを取得する

PHPではPOSTで送信したデータを取得するには、スーパーグローバル変数である$_POSTを使用します。

$_POSTはphpのバージョン4.1.0から導入され、それまで使用していた$HTTP_POST_VARSは非推奨になりました。

以下にフォームから入力して送信したデータを、$_POSTで取得するサンプルプログラムを紹介します。

サンプルプログラム:

sample-post1.php

sample-post2.php

実行結果:

sample-post1.phpにアクセスしてフォームに入力
03

送信ボタン押下後
04

サンプルではフォームから入力したデータをPOSTで送信するため、formタグのmethodをPOSTで指定しています。

送信先にはaction属性で「sample-post2.php」を指定しています。入力したデータはinputタグのname属性の”data”に設定されます。

sample-post2.phpでは、$_POSTに入力した情報である”data”の情報が取得されます。

配列をPOSTで取得する

フォームから入力された配列のデータをPOSTで取得することも可能です。

入力側で配列を指定するには、inputタグのname属性の最後に[]を付加します。

以下に配列のデータを送信してPOSTで受け取るサンプルプログラムを紹介します。

サンプルプログラム:

sample-post1.php

sample-post2.php

実行結果:
sample-post1.phpにアクセスしてフォームに入力
05

送信ボタン押下後
06

選択したチェックボックスの値を配列として取得することができています。

POSTでアップロードできるサイズの設定

PHPではPOSTで送信できるデータサイズを変更することができます。変更するには「php.ini」のpost_max_sizeの箇所でサイズを指定します。

現在の設定値については、以下のサンプルを実行することで確認することができます。

GET送信する方法

GET送信とは、POST送信と同じくHTTPの通信方式の1つです。

POST送信との違いとして、GET送信はデータをURLの末尾に「?」を付けて、データを送信します。

GET送信はURLの後ろにデータを付加するため、URLの長さの上限値に達するとデータを送信することができなくなります。

GETで送信したデータを取得する

PHPではGETで送信したデータを取得するには、スーパーグローバル変数である$_GETを使用します。

$_GETはphpのバージョン4.1.0から導入され、それまで使用していた$HTTP_GET_VARSは非推奨になりました。

以下にフォームから入力して送信したデータを、$_GETで取得するサンプルプログラムを紹介します。

サンプルプログラム:

sample-get1.php

sample-get2.php

$_GETはPOSTで解説したサンプルとほぼ同じ動きですが、URLが表示されるアドレスバーに、送信されたデータが表示されます。

07

POSTとGETの使い分け

データの送信方法にはPOSTとGETがあることがわかりましたが、どのように使い分けるのでしょうか。

Googleなどの検索エンジンは、検索キーワードにGET送信が使われています。検索してみると、アドレスバーに「q=検索キーワード」が表示されているのがわかります。

08

このURLにアクセスすれば同じ検索結果を見ることができるので、このような場合はGET送信が適しています。

一方、サイトへのログイン時など、ユーザIDやパスワードなど人に見られては困る情報を送信するにはPOST送信が適しています。

用途によって使い分けましょう。

外部サイトの情報を取得する

file_get_contents関数を使用する

file_get_contents関数を使うと、外部サイトにPOST送信を行うことができます。

以下にfile_get_contents関数を使用して外部サイトにPOST送信するサンプルプログラムを紹介します。

サンプルプログラム:

sample-post1.php

sample-post2.php
外部サイトに配置します

サンプルではhttp_build_query関数を使い、POST送信するデータをURL エンコードしています。

送信時のオプションには、POST送信の指定、送信するデータを設定します。

file_get_contents関数に、外部サイトのURL、オプションを指定して実行し、最後に取得した内容を出力しています。

file_get_contents関数の使い方については、以下の記事で詳しく解説しています!

cURL関数を使用する

HTTPリクエストで外部サイトの情報を取得するにはcURL関数を使用する方法があります。

cURL関数はセッションの初期化から転送用オプションの設定、セッションの実行、セッションの終了と、手順を踏む必要があります。

そんなcURL関数の使い方については、以下の記事で詳しく解説しています!

まとめ

今回はPOST送信GET送信について解説しました。

フォームから入力したデータをサーバに送信する手段としてPOST送信、GET送信は基本となりますので、使い方をよく理解しておきましょう。

もし、POST送信、GET送信する方法を忘れてしまったら、この記事を思い出してくださいね!

最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

LINEで送る
Pocket

書いた人

ヤマシタ

フリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、今まで200本以上の執筆経験があります

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説