GET送信の要求を処理する

 GET送信は、リクエストするURLの末尾に「?」を付けて、その後にデータをつなげて送信する方法です。次のようにデータを指定します。

 ?の後に「データ名=データ」のように指定します。複数指定したい場合は、「&」でつなげて指定します。たくさんのデータを指定できますが、Webサーバーの設定や、Webブラウザーの仕様で文字数が制限されます。

 PHPプログラムでは、URLの後に指定されたデータ(クエリーストリング)を「$_GET」変数に格納して扱います。その変数は連想配列になっていて、「データ名」の配列名が割り当てられます。

サーバーにデータが渡されるイメージ
サーバーにデータが渡されるイメージ

■ URLにデータを直接セットしてデータを渡す

 URLの末尾に直接データを指定してサンプルを実行してみましょう。

○ ファイル

 次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 GetFromURLTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

GetFromURLTest.php

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>GET受信</title>
  6. </head>
  7. <body>
  8. <?php
  9. var_dump($_GET);
  10. ?>
  11. </body>
  12. </html>

○ 実行結果

実行結果
実行結果

○ 解説

 今回は実行時にクエリーストリングを指定していません。そのため実行結果を確認すると$_GET変数の内容は空となっています。

 では、URLの末尾に「?fruit=apple&food=chicken」を追加して再表示してみましょう。

○ 実行結果

実行結果
実行結果

○ 解説

 URLの末尾にクエリーストリングを指定すると、$_GET変数にデータがセットされていることを確認できます。今回は「fruit」キーに「apple」が、「food」キーに「chicken」がセットされていることを確認できます。

■ フォームからGET送信を指定してデータを渡す

 HTMLフォームを準備して、フォームにGET送信を指定し、データを送信してみましょう。

○ ファイル

 次のPHPファイルをプロジェクトに追加してください。

ファイルの種類 PHPファイル
ファイル名 GetFromFormTest.php

サンプルダウンロード

○ プログラム

 次のようにプログラムを記述してください。

GetFromFormTest.php

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>GET送信フォーム</title>
  6. </head>
  7. <body>
  8.  <form action="GetFromURLTest.php" method="GET">
  9.   フルーツ:
  10.   <input type="text" name="fruit">
  11.   <br>
  12.   食べ物:
  13.   <input type="text" name="food">
  14.   <br>
  15.   <input type="submit">
  16.  </form>
  17. </body>
  18. </html>

○ 実行結果

実行結果
実行結果

○ 解説

 8行目で、Formタグを指定しています。送信先に「GetFromULRTest.php」、送信方法をGETとしています。10、13行目はテキストボックスを指定しています。それぞれのテキストボックスのname属性に「fruit」、「food」を指定しています。そのため、クエリ送信ボタンをクリックすると、送信先URLに続けて、「name属性値=入力内容」がセットされ、送信されます。

 送信結果のURLを見ると、データが付加されていることを確認できます。「%XX」のデータが付加されていますが、これは入力データが日本語のため、URLとして扱える形に変換されているためです(URLエンコード)。PHPで受信データを扱うときは変換されたデータは元に戻され(URLデコード)、$_GET変数に連想配列としてセットされます。

前へ   次へ