絵でわかるWebプログラミング入門

GETとPOST、初心者向け解説

PHPにはGETとPOSTという便利な技術が用意されています。実際には「$_GET」「$_POST」と書きます。

GET、POSTそれぞれの働きや使い方を簡単に解説しています。

GETとは何か

GETとは、PHPで用意されている、URLパラメータを取得する技術です。

URLパラメータというのは、URLに記述できるメモのようなデータのことです。


URLパラメータの場所

URLパラメータは、URLに「?」を付けると始まります。データの名前と内容を「=」でつなげて書きます。図では「a」が名前、「2」が内容です。


さらにデータは「&」で区切って複数設定することができます。


複数のURLパラメータの書き方

GETを使った演習

PHPでは、URLパラメータを「$_GET」という連想配列にセットしてくれています。URLパラメータのデータ名をキーにしてデータを取り出せます。


実はこのページにもGETデータを処理するスクリプトが仕込んであります。次のようにアドレス欄のURLの末尾にURLパラメータを追加してリロードしてみてください。

面倒くさい人はこちら「get-post?you=tom


あぁ、トム!!

テキストの表示が変わったでしょうか?

次のPHPスクリプトを冒頭に仕込んでいます。

		<?php
		if($_GET['you']=='tom'){
			$get='あぁ、トム!!';
		}else{
			$get='あなたはトムではありません';
		}
		?>

「$get」を上のテキスト部分に出力しているので、URLパラメータによって表示が変化するというからくりです。


URLパラメータをGETする処理の流れを図で見てみましょう。


GETリクエストによるURLパラメータの処理の流れ

簡単にいえばGETとは、ブラウザとウェブサーバでデータをやり取りする技術です。

この技術によって、PHPスクリプトでユーザ側のデータを柔軟に処理できるようになります。

POSTとは何か

POSTも、GETと同じくユーザからのデータをやり取りする技術です。

違うのはURLを使わないという点で、HTMLのFORMやJavaScriptを使ってウェブサーバに送信します。

		

form要素のmethod属性で「post」を指定するとPOSTで送信されます。ちなみに「get」と指定するとGETと同じようにURLパラメータとして送信されます。


送信データの名前は各input要素のname属性の値になります。この例では「you」という名前になり、データの内容はテキスト欄に入力されたテキストになります。


たくさんのデータや画像データ、URLに出したくないデータなどはPOSTが適しています。

POSTを使った演習

PHP側では「$_POST」という連想配列にセットされ、「$_GET」と同じように取り出して使うことができます。


先ほどのサンプルコードを実装すると次のようなフォームが表示されます。



実はこのページには次のようなPOSTデータを処理するスクリプトも仕込んであります。ほとんどGETのときと同じです。

		<?php
		if($_POST['you']=='tom'){
			$post='あぁ、トム!!';
		}else{
			$post='あなたはトムではありません';
		}
		?>

試しに「tom」と入力して送信してみましょう。

あなたはトムではありません

PHPでのPOSTの処理の流れを図で見てみましょう。


POSTリクエストによるデータの処理の流れ

GETのときとほとんど変わりません。