ホーム > PHPの文法 > 5 変数 > PHP $_REQUEST(リクエスト変数)のすべて!【初心者向け基本】
PHPリファレンス

UPDATE:2021年06月20日

PHP $_REQUEST(リクエスト変数)のすべて!【初心者向け基本】

PHP $_REQUEST(リクエスト変数)のすべて!【初心者向け 基本~】 | wepicks!
PHP4.1以上 PHP5 PHP7 PHP8



目次


$_REQUEST(リクエスト変数) 簡単まとめ

1 Minute Note

  • $_REQUEST はPHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $_REQUEST は現在の $_GET、$_POST、$_COOKIE などの内容をまとめた変数
  • $_REQUEST は 連想配列 として使用する
  • $_REQUEST は、関数やメソッドの内部で使用する場合、global $_REQUEST; とする必要がない
  • $_REQUEST は、PHPの設定ディレクティブ(php.ini)
    variables_order (PHP5.3~)で仕様を決める
  • variables_order = "EGPCS"の場合、スーパーグローバル変数 ($_ENV、$_GET、$_POST、$_COOKIE、$_SERVER)の値が組み込まれ、左から順番に解析 後から登録した値が古い値を上書
$_REQUEST(リクエスト変数)は、$_GET、$_POST、$_COOKIE の内容をまとめた配列(配列変数)で、PHPの設定ディレクティブ(php.ini)の内容によって、$_ENV、$_SERVER なども追加できます。$_REQUEST['キーネーム']の連想配列として使用します。



$_REQUEST(リクエスト変数)とは

POINT

  • $_REQUESTPHPの定義済み変数(=スーパーグローバル変数)の1つ
  • $_REQUEST現在の $_GET、$_POST、$_COOKIE などの内容をまとめた変数

$_REQUESTは、PHPの定義済み変数のリクエスト変数です。データ型は配列です。この変数(配列変数)は、現在の$_GET、$_POST、$_COOKIEの内容をまとめた変数です。PHPディレクティブ(php.ini)の variables_order の設定によって $_ENV、$_SERVER を追加することもできます。このディレクティブの設定で登録順序も指定できます。$_REQUESTの仕様設定 request_order。初期値では COOKIE > POST > GET の順で優先されます。

簡単な例

以下の例では、$_POST の内容を $_REQUEST で表示させています。フォームで送信された $_POST['name'] は同じキーネームの連想配列 $_REQUEST ['name'] で受け取ることが可能です。

– サンプル Click Here ! –

実行結果
送信されました。
名前は、山田さんです。

※注意:
$_REQUEST の値は $_POST や $_GET など、ユーザーが入力した値が直接設定されているので、汚染されている値が格納されている場合があります。$_REQUEST の値を使用する場合は適切にフィルタリングを行う必要があります。フィルタリングについてはこちらを参照下さい。


$_REQUESTはPHPの定義済み変数

$_REQUESTは、PHPの定義済み変数の内の1つの変数です。PHPには定義済み変数が複数あります。其の中の1つが$_REQUESTです。PHPの定義済み変数はスーパーグローバル変数とも言います。$_REQUEST = PHPの定義済み変数 = スーパーグローバル変数また、$_REQUESTは自動グローバル変数とも呼ばれます。
(PHPには定義済みの定数というものもあります。詳細はこちらを参照下さい。)

PHPの定義済み変数(=スーパーグローバル変数)

$GLOBALS
(グローバル変数)
・グローバルスコープで使用可能なすべての変数への参照
・連想配列として使用
$_SERVER
(サーバー変数)
・サーバ情報および実行時の環境情報
・連想配列として使用
$_GET
(ゲット変数)
・HTTP GET 変数
・連想配列として使用
$_POST
(ポスト変数)
・HTTP POST 変数
・連想配列として使用
$_FILES
(ファイル変数)
・HTTP ファイルアップロード変数
・連想配列として使用
$_REQUEST
(リクエスト変数)
・HTTP リクエスト変数
・連想配列として使用
$_SESSION
(セッション変数)
・セッション変数
・連想配列として使用
$_ENV
(環境変数)
・環境変数
・連想配列として使用
$_COOKIE
(クッキー変数)
・HTTP クッキー
・連想配列として使用

これら、PHPの定義済み変数は、プログラムコード中何処からでも使用することができます。関数の内部でも globalキーワードを使用せず呼び出すことが出来ます。このように、スーパーグローバル変数は非常に便利なものです。
通常、変数には有効範囲などのルールがあります。このルールは、PHPにおいて変数のスコープという宣言の場所とそれによる有効範囲として定められています。スコープには、「グローバルスコープ」「ローカルスコープ」「スタティック変数」「関数の引数」の4種類ありますが、これらすべてのスコープを持っているのがスーパーグローバル変数です。
変数のスコープについてはこちらを参照下さい。

※注意:
ただし、スーパーグローバル変数は、関数やクラスメソッドの中の 可変変数 として使用することはできません。

可変変数についてはこちらを参照下さい。


$_REQUESTの送受信

POINT

  • $_REQUESTは、連想配列として使用する
  • $_REQUEST は、関数やメソッドの内部で使用する場合、global $_REQUEST; とする必要がない
  • $_REQUESTは、PHPの設定ディレクティブ(php.ini)
    variables_order (PHP5.3~)で仕様を決める
  • variables_order = "EGPCS"の場合、
    スーパーグローバル変数 ($_ENV、$_GET、$_POST、$_COOKIE、$_SERVER)の値が組み込まれ、左から順番に解析 後から登録した値が古い値を上書


$_REQUESTは現在の $_GET、$_POST、$_COOKIE などの内容をまとめた変数

$_REQUESTは、現在の$_GET $_POST $_COOKIE 等のスーパーグローバル変数の内容を纏めたもので、ユーザー入力や、サーバーによりスクリプトへ渡される全ての値の変数です。

$_REQUESTは、連想配列で使用します。

$_REQUESTは、スーパーグローバル変数なので、スクリプトのコード中どこからでも使用することが出来る変数です。関数やメソッドの内部で使用する場合にも global $_REQUEST; とする必要はありません。

$_POST と $_REQUEST

以下は $_POST の値を $_REQUEST で表示させています。

送信した結果は、
結果は

送信されました。
名前は、山田さんです。

となります。

$_GET と $_REQUEST

$_GET の値を $_REQUEST で表示させています。

送信した結果は、
結果は

送信されました。
名前は、鈴木さんです。

となります。


$_REQUESTは連想配列として使用する

$_REQUESTは、連想配列で使用します。連想配列は配列変数のキー名を文字列とします。$_POST、$_GET、$_COOKIE、などのキー名を $_REQUEST のキー名とします。

次の例では、 $_POST['name'] を $_REQUEST['name'] で呼び出しています。

$_POST のキー名が $_REQUEST のキー名になっています。


$_REQUESTを関数やメソッドの内部で使用する場合

$_REQUESTは、スーパーグローバル変数なので、スクリプトのコード中どこからでも使用することが出来る変数です。関数やメソッドの内部で使用する場合にも global $_REQUEST; とする必要はありません

通常、関数外部で宣言された変数は global キーワードで引き渡さなければ、関数内部で利用できません。
例えば、

結果は

こんにちは、さん

となります。

global キーワードで関数内部へ変数を引き渡すと

結果は

こんにちは、山田さん

となります。

ですが、$_REQUESTを使用すると global $_REQUEST; と宣言しなくても関数内部で使用できます

結果は

こんにちは、山田さん。

となります。


$_REQUESTの仕様設定 variables_order

この $_REQUEST に含まれる変数の値や順序は、 PHPの設定ディレクティブ(php.ini) variables_order で設定します。
variables_order の設定内容を確認する場合は、phpinfo() 関数を利用します。
この関数を実行させて表示させた情報の中に variables_order の表記があります。
例えば、

variables_order = "EGPCS"

とした場合、
スーパーグローバル変数 ($_ENV、$_GET、$_POST、$_COOKIE、$_SERVER )の値が組み込まれ、左から順番に解析されます。例えば variables_order を “SP” に設定すると、PHP は スーバーグローバル変数 $_SERVER と $_POST を作成しますが、$_ENV、$_GET、 $_COOKIE は作成しません。空 “” に設定すると、スーパーグローバル変数を設定しません。


$_REQUESTの仕様設定 request_order

この$_REQUESTに含まれる変数の値や順序は、 PHPの設定ディレクティブ(php.ini) request_order でも決められます。このディレクティブは、variables_order と同様に、PHP が $_GET や $_POST $_COOKIEなどのスーパーグローバル変数を $_REQUEST 変数に登録する際の順序を表します。登録は左から右の順番に行われ、後から登録した値が古い値を上書きします。デフォルト状態では、$_COOKIE の ‘C’ は含まれていません。このディレクティブはPHP5.3から導入されました。このディレクティブが設定されていない場合は、 variables_order で指定している内容が $_REQUESTを設定します。


サンプルコード

– サンプル Click Here ! –

– サンプル Click Here ! –


タグ(=記事関連ワード)

日付

公開日:2016年12月21日
最終更新日:2021年06月20日

このカテゴリの他のページ

この記事へのコメント

トラックバックurl

https://wepicks.net/phpref-request/trackback/

page top