【PHP】GETメソッド($_GET)でできること
GETメソッドとは?
GETメソッドは、HTTPリクエストの一種で、主にURLのクエリパラメータを使用してサーバーにデータを送信します。ブラウザのアドレスバーに表示されるため、ブックマークや共有が容易ですが、データがURLに含まれるため機密情報の送信には向きません。
$_GETスーパーグローバル変数
PHPでは、GETメソッドで送信されたデータを取得するために、スーパーグローバル変数 $_GET
を使用します。この変数は連想配列として機能し、クエリパラメータのキーを指定することで対応する値を取得できます。
基本的な使用例
以下の例では、URLパラメータから名前を取得して表示します。
<?php if (isset($_GET["name"])) { echo "こんにちは、" . htmlspecialchars($_GET["name"]) . "さん!"; } else { echo "名前が指定されていません。"; } ?>
このスクリプトを example.php
に保存し、次のようにアクセスすると動作します:
http://example.com/example.php?name=太郎
複数のパラメータを渡す
GETメソッドでは複数のパラメータを送信できます。例えば、以下のURLで名前と年齢を送信します:
http://example.com/example.php?name=花子&age=25
PHPで取得するコードは次の通りです:
<?php if (isset($_GET["name"]) && isset($_GET["age"])) { echo htmlspecialchars($_GET["name"]) . "さんは" . (int)$_GET["age"] . "歳です。"; } else { echo "名前または年齢が指定されていません。"; } ?>
未定義のパラメータとデフォルト値
GETパラメータが指定されない場合にデフォルト値を設定することができます。
<?php $name = isset($_GET["name"]) ? htmlspecialchars($_GET["name"]) : "ゲスト"; echo "ようこそ、" . $name . "さん!"; ?>
セキュリティ上の注意点
- HTMLエスケープ:
htmlspecialchars()
を使用してXSS(クロスサイトスクリプティング)を防ぐ。 - 型の確認: 数値の場合は
(int)
を使用して整数型に変換。 - SQLインジェクション対策: データベースと連携する場合は
PDO
などを使用し、プリペアドステートメントを活用。
実際のWebアプリケーションでの活用例
例えば、ブログ記事のページでは、記事IDをGETパラメータとして受け取ります:
<?php if (isset($_GET["article_id"])) { $article_id = (int)$_GET["article_id"]; echo "表示する記事ID: " . $article_id; } else { echo "記事が選択されていません。"; } ?>
URL例:
http://example.com/blog.php?article_id=10
このように、GETメソッドを適切に活用すると、簡単にデータを受け渡しできるようになります。