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)」のペアが含まれています:
subject=PHPweb=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>