PHPでは、GETリクエストやPOSTリクエストで送られたデータを、
連想配列として取り扱います(参考: 連想配列とは)。
GETリクエストで送られたデータは、$_GETという定数に格納されます。
フォーム欄のnameで指定した名前が、連想配列のキーとして使用されます。
$_GET
$_GETにはGETリクエストで送られたデータが、連想配列として格納されます。
例えば以下のサンプルを見てみましょう。
サンプルコード
Form_Get.htmlのname=num1となっている入力欄に入れたデータと、
name=num2となっている入力欄に入れたデータは、
PHP側では、$_GET[“num1”]、$_GET[“num2”]で、それぞれ取得します。
1 2 3 4 5 6 7 8 9 10 11 12 | <html> <header> <meta charset= "UTF-8" > </header> <body> <form method= "GET" action= "Sample36.php" > num1:<input type= "text" name= "num1" ><br> num2:<input type= "text" name= "num2" ><br> <input type= "submit" > </form> </body> </html> |
1 2 3 4 | <?php echo "num1 ⇒ " . $_GET [ "num1" ]. "<br>\n" ; echo "num2 ⇒ " . $_GET [ "num2" ]. "<br>\n" ; ?> |
実行結果
num1に111、num2に222といれると、
遷移先のSample36.phpでその結果が表示されていますね。
Sample36.phpのURLをよく見ると、
Sample36.php?num1=111&num2=222と、URLの一部にGETパラメーターの値が設定されています。
$_GETの書き換え
連想配列である$_GETは、キー=値という形式で再代入可能です。
実際の取り扱い
実際には、$_GETをそのまま取得することは、現在のPHP開発の現場では行いません。
filter_inputを使って間接的に取得します。
また出力の際も、htmlspecialchars関数を使って、タグ文字をただの文字列として出力できるようにします。
(参考: htmlcpecialchars)。
1 2 3 4 5 6 7 8 9 | <?php // GETパラメータからnameという名前の値を取得 $raw_name = filter_input(INPUT_GET, "name" ); //$nameをサニタイズ $name = htmlspecialchars( $raw_name ); // HTML上に出力 echo "名前は{$name}" ; ?> |