PHP $_REQUEST

$_REQUESTは、送信されたフォームデータとすべてのクッキーデータを含むPHPのスーパーグローバル変数です。

言い換えると、$_REQUESTは$_GET、$_POST、$_COOKIEからのデータを含む配列です。

フォームフィールドやクッキーの名前を指定して、次のようにこのデータにアクセスできます。


$_REQUEST['firstname']

$_POSTリクエストでの$_REQUESTの使用

POSTリクエストは通常、HTMLフォームから送信されるデータです。

次に示すHTMLフォームの例を見てください。


<html>
<body>

<form method="post" action="demo_request.php">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

</body>
</html>

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

アクションファイルでは、$_REQUEST変数を使用して入力フィールドの値を収集できます。


$name = $_REQUEST['fname'];
echo $name;

以下の例では、HTMLフォームとPHPコードを同じPHPファイルに配置しています。

セキュリティのためにいくつかの追加行も追加しています。


<html>
<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
  Name: <input type="text" name="fname">
  <input type="submit">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = htmlspecialchars($_REQUEST['fname']);
  if (empty($name)) {
    echo "Name is empty";
  } else {
    echo $name;
  }
}
?>

</body>
</html>

$_GETリクエストでの$_REQUESTの使用

GETリクエストは、上記の例のようにフォームの送信である場合もあります。HTMLの<form>要素のmethod属性がGETに設定されている場合です。

GETリクエストは、URLアドレスの後に追加されるクエリ文字列からのデータでもあります。

次に示すのは、クエリ文字列を持つHTMLハイパーリンクの例です。


<html>
<body>

<a href="demo_phpfile.php?subject=PHP&web=CodeLabJP">Test $GET</a>

</body>
</html>

ユーザーがリンクをクリックすると、クエリ文字列のデータがdemo_phpfile.phpに送信されます。

PHPファイルでは、$_REQUEST変数を使用してクエリ文字列の値を収集できます。

PHPファイル demo_phpfile.php:


<html>
<body>

<?php
echo "Study " . $_REQUEST['subject'] . " at " . $_REQUEST['web'];
?>

</body>
</html>