GETとPOST、初心者向け解説
PHPにはGETとPOSTという便利な技術が用意されています。実際には「$_GET」「$_POST」と書きます。
GET、POSTそれぞれの働きや使い方を簡単に解説しています。
GETとは何か
GETとは、PHPで用意されている、URLパラメータを取得する技術です。
URLパラメータというのは、URLに記述できるメモのようなデータのことです。
URLパラメータは、URLに「?」を付けると始まります。データの名前と内容を「=」でつなげて書きます。図では「a」が名前、「2」が内容です。
さらにデータは「&」で区切って複数設定することができます。
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とは、ブラウザとウェブサーバでデータをやり取りする技術です。
この技術によって、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の処理の流れを図で見てみましょう。
GETのときとほとんど変わりません。