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

書いた人 ヤマシタ
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーエンジニアのヤマシタです。

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

この記事では

・POSTとは
・POSTで送信したデータを取得する方法
・GETとは
・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送信する方法を忘れてしまったら、この記事を思い出してくださいね!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーランスをされている市川友哉さん。33歳で、プログラミングを学び始め、4ヶ月という短い期間でフリーランスエンジニアとして独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!

「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。

  • 24時間質問し放題
  • あなただけのオーダーメイドカリキュラムで学習の効率化
  • 仕事獲得方法からオリジナルアプリ開発方法

侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。

まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。

詳しいサービス内容は、下記よりご参照ください。

cta_mtm1

非常識な結果を出した卒業生

活躍する現役エンジニア

人気記事セレクション

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ヤマシタ

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