GET送信は、リクエストするURLの末尾に「?」を付けて、その後にデータをつなげて送信する方法です。次のようにデータを指定します。
https://XXXXX.xx.xx?data=value
https://XXXXX.xx.xx?data1=value1&data2=value2&data3=value3
?の後に「データ名=データ」のように指定します。複数指定したい場合は、「&」でつなげて指定します。たくさんのデータを指定できますが、Webサーバーの設定や、Webブラウザーの仕様で文字数が制限されます。
PHPプログラムでは、URLの後に指定されたデータ(クエリーストリング)を「$_GET」変数に格納して扱います。その変数は連想配列になっていて、「データ名」の配列名が割り当てられます。
URLの末尾に直接データを指定してサンプルを実行してみましょう。
○ ファイル
次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | GetFromURLTest.php |
○ プログラム
次のようにプログラムを記述してください。
GetFromURLTest.php
○ 実行結果
○ 解説
今回は実行時にクエリーストリングを指定していません。そのため実行結果を確認すると$_GET変数の内容は空となっています。
では、URLの末尾に「?fruit=apple&food=chicken」を追加して再表示してみましょう。
○ 実行結果
○ 解説
URLの末尾にクエリーストリングを指定すると、$_GET変数にデータがセットされていることを確認できます。今回は「fruit」キーに「apple」が、「food」キーに「chicken」がセットされていることを確認できます。
HTMLフォームを準備して、フォームにGET送信を指定し、データを送信してみましょう。
○ ファイル
次のPHPファイルをプロジェクトに追加してください。
ファイルの種類 | PHPファイル |
---|---|
ファイル名 | GetFromFormTest.php |
○ プログラム
次のようにプログラムを記述してください。
GetFromFormTest.php
○ 実行結果
○ 解説
8行目で、Formタグを指定しています。送信先に「GetFromULRTest.php」、送信方法をGETとしています。10、13行目はテキストボックスを指定しています。それぞれのテキストボックスのname属性に「fruit」、「food」を指定しています。そのため、クエリ送信ボタンをクリックすると、送信先URLに続けて、「name属性値=入力内容」がセットされ、送信されます。
送信結果のURLを見ると、データが付加されていることを確認できます。「%XX」のデータが付加されていますが、これは入力データが日本語のため、URLとして扱える形に変換されているためです(URLエンコード)。PHPで受信データを扱うときは変換されたデータは元に戻され(URLデコード)、$_GET変数に連想配列としてセットされます。