PHP 速習チュートリアル

PHP $_GET

1. PHP $_GET の概要

$_GET スーパーグローバルは、HTTP GET メソッドを通じて受け取った変数の配列を保持します。

PHP のスーパーグローバルは組み込みの変数であり、関数の内部や外部を問わず、すべてのスコープ(Scopes)から常にアクセスすることができます。

HTTP GET メソッド経由で変数を送信する主な方法は、以下の2つです:

  • URL のクエリ文字列(Query Strings)を利用する
  • HTML フォームで method="get" を指定する

2. URL クエリ文字列による $_GET

クエリ文字列とは、URL の末尾に追加されるデータのことです。以下の <a> 要素の例では、? 記号以降の記述すべてがクエリ文字列に該当します。

URL クエリパラメータを含む HTML リンク:

<html>
<body>
  <a href="demo_phpfile.php?subject=PHP&web=volardev.com">Test $GET</a>
</body>
</html>

上記のクエリ文字列には、2つの「キー(Key)/ 値(Value)」のペアが含まれています:

  1. subject=PHP
  2. web=volardev.com

PHP ファイル内では、$_GET スーパーグローバルを使用して、これらのクエリ文字列の値を収集できます。

実行例:PHP ファイル demo_phpfile.php

<html>
<body>

<?php
// $_GET を使用してパラメータを取得し、サニタイズして出力
$subject = htmlspecialchars($_GET['subject']);
$web = htmlspecialchars($_GET['web']);

echo "$web で $subject を学習しましょう。";
?>

</body>
</html>

       注意: XSS(クロスサイトスクリプティング)攻撃などのセキュリティ脆弱性を防ぐため、$_GET などのスーパーグローバルから取得したデータを使用する前には、必ずバリデート(検証)とサニタイズ(無害化)を行ってください。上記の例で使用している htmlspecialchars() 関数はその一例です。より堅牢なフィルタリングを行うには、PHP の filter 関数群を使用することをお勧めします。

3. HTML フォームにおける $_GET

HTML フォームの method 属性が "get" に設定されている場合、そのフォームは HTTP GET メソッド経由で情報を送信します。

これを実演するために、まずはシンプルな HTML フォームを作成します。

HTML ファイル:

<html>
<body>

<form action="welcome_get.php" method="GET">
  名前: <input type="text" name="name">
  メールアドレス: <input type="text" name="email">
  <input type="submit" value="送信">
</form>

</body>
</html>

ユーザーが送信ボタンをクリックすると、フォームデータは <form> タグの action 属性で指定された PHP ファイルに送られます。

このとき、フォームの各フィールドはユーザーの入力値とともに、以下のようなクエリ文字列として PHP ファイルへ送信されます:
[email protected]

PHP ファイル内では、$_GET 変数を使用して各入力フィールドの値を取得できます。

実行例:welcome_get.php ページ内の PHP コード

<html>
<body>

ようこそ、<?php echo htmlspecialchars($_GET["name"]); ?> さん。<br>
あなたのメールアドレスは: <?php echo htmlspecialchars($_GET["email"]); ?> です。

</body>
</html>