【PHP】$_REQUESTでフォームの送信データやURLのクエリパラメータ、Cookieの値をまとめて取得【基本と応用例】

【PHP】$_REQUESTでフォームの送信データやURLのクエリパラメータ、Cookieの値をまとめて取得【基本と応用例】

$_REQUESTとは?

PHPの `$_REQUEST` は、スーパーグローバル変数の1つで、フォームの送信データやURLのクエリパラメータ、Cookieの値をまとめて取得できる便利な変数です。

$_REQUESTの仕組み

`$_REQUEST` は `$_GET`、`$_POST`、`$_COOKIE` の値を統合した配列であり、以下のようにアクセスできます。

<?php
echo $_REQUEST["username"];
?>
    

このコードは、GETまたはPOSTまたはCOOKIEのいずれかで `username` が送信されていれば取得できます。

GET・POST・COOKIEとの違い

`$_REQUEST` は `$_GET`、`$_POST`、`$_COOKIE` のすべてを含むため、どの送信方法で受け取ったのか明確に区別することができません。

<?php
echo $_GET["username"]; // URLパラメータで受け取る
echo $_POST["username"]; // フォームのPOSTデータで受け取る
echo $_COOKIE["username"]; // Cookieデータで受け取る
?>
    

フォームデータの受け取り

`$_REQUEST` を使うと、GETでもPOSTでも受け取れるため、統一的にフォーム処理ができます。

<form method="post" action="process.php">
    名前: <input type="text" name="name">
    <input type="submit">
</form>
    

`process.php` でデータを受け取る方法:

<?php
echo "入力された名前: " . $_REQUEST["name"];
?>
    

URLパラメータの取得

URLのクエリパラメータも `$_REQUEST` で取得できます。

例: example.com/page.php?user=John

<?php
echo "ユーザー名: " . $_REQUEST["user"];
?>
    

Cookieに保存された値も `$_REQUEST` を使って取得可能です。

<?php
setcookie("theme", "dark", time() + 3600);
echo "選択されたテーマ: " . $_REQUEST["theme"];
?>
    

$_REQUESTを使う際のセキュリティリスク

`$_REQUEST` はどこからのデータかを区別しないため、意図しないデータを受け取る可能性があります。

  • 意図しないデータの取得
  • CSRF(クロスサイトリクエストフォージェリ)攻撃
  • SQLインジェクションのリスク

例えば、意図せず `$_COOKIE` の値を `$_POST` と同じものとして処理してしまうと、セキュリティの問題が生じる可能性があります。

$_REQUESTの適切な使い方

安全に使用するためには、明確に `$_GET` や `$_POST` を使用することが推奨されます。

<?php
// 明示的に GET か POST かを指定する
$name = isset($_POST["name"]) ? $_POST["name"] : "";
echo "入力された名前: " . htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
?>
    

また、`htmlspecialchars()` を使ってエスケープ処理をすることで、XSS攻撃を防ぐことができます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です