定義済みの変数
PHPは、実行する全てのスクリプトに定義済みの多くの変数を
提供します。しかし、これらの変数の多くは、
実行するサーバーの種類、サーバーのバージョンおよび設定、
その他の要素に依存しており、完全に記述することはできません。
これらの変数のいくつかは、PHPを
コマンドライン
で実行した場合には利用できません。
これらの変数の一覧については、
予約済みの定義済みの変数
のセクションを参照してください。
警告 |
PHP 4.2.0以降では、PHPディレクティブ register_globalsの
デフォルト値がoffに変更されています。
これは、PHPにおける大きな変更です。
register_globalsをoffにすると、
グローバルスコープに定義済みの変数に影響を与えます。
例えば、DOCUMENT_ROOTを取得するには、
$DOCUMENT_ROOTのかわりに
$_SERVER['DOCUMENT_ROOT']を使用することに
なります。また、URL
http://www.example.com/test.php?id=3 から
$idの代わりに$_GET['id']、
$HOMEのかわりに$_ENV['HOME']を
使用します。
この変更に関する情報については、
register_globalsに関する設定
エントリ、セキュリティに関する章の
register_globalsの使用、
また、4.1.0および
4.2.0の
Release Announcementsを参照して下さい。
スーパーグローバル
配列のようなPHPの予約済みの定義済み変数を使用することが
推奨されます。
|
バージョン4.1.0以降、PHPに(使用する場合)Webサーバ、環境変数、
ユーザ入力からの変数を値とする定義済みの配列が追加されています。
これらの新しいは配列は、自動グローバル、すなわち、自動的に全ての
スコープで利用可能です。このため、これらは、しばしば
'autoglobals' または 'superglobals' として知られています。
(PHPには、ユーザ定義のスーパーグローバルという機構はありません。)
スーパーグローバルのリストを以下に示します。
しかし、これらの内容のリストおよび定義済みのPHP変数とそれらの特性に
関する更なる議論については、
定義済みの予約変数の
セクションを参照してください。
より古い定義済みの変数($HTTP_*_VARS)もまだ
存在します。
variables_orderに
ある変数が設定されていない場合、これらに対応するPHPの定義済み
変数も空のままとなります。
PHP スーパーグローバル
- $GLOBALS
スクリプトのグローバルスコープの中で現在利用可能な全ての
変数へのリファレンスを含みます。この配列のキーは、グローバル
変数の名前です。
$GLOBALS は、PHP 3以降存在します。
- $_SERVER
Webサーバーまたはカレントのスクリプトの実行環境に直接関係する
ものにより設定された変数。以前の(まだ利用可能ですが、推奨
されません) $HTTP_SERVER_VARS配列に
類似のものです。
- $_GET
HTTP GETによりスクリプトに入力された変数。以前の
(まだ利用可能ですが、推奨されません)
$HTTP_GET_VARS配列に類似のものです。
- $_POST
HTTP POSTによりスクリプトに入力された変数。以前の
(まだ利用可能ですが、推奨されません)
$HTTP_POST_VARS配列に類似のものです。
- $_COOKIE
HTTP Cookieによりスクリプトに入力された変数。以前の
(まだ利用可能ですが、推奨されません)
$HTTP_COOKIE_VARS配列に類似のものです。
- $_FILES
HTTP POSTファイルアップロードによりスクリプトに渡される変数。
以前の$HTTP_POST_FILES配列(まだ利用可能ですが、
推奨されません)と類似しています。詳細については、
POSTメソッド
のアップロードを参照して下さい。
- $_ENV
環境によりスクリプトに指定される変数。
以前の$HTTP_ENV_VARS配列(まだ利用可能ですが、
推奨されません)と類似しています。
- $_REQUEST
ユーザ入力機構によりスクリプトに入力される全ての変数で、
このため、信頼することができません。この配列に含まれる
変数の存在と順番は、設定ディレクティブ
variables_order
に基づき定義されます。この配列は、4.1.0より前のバージョンのPHP
には直接類似するものはありません。
import_request_variables()も参照してください。
注意
コマンドライン
で実行している場合、この変数には、
argv および argc エントリ
は含まれません。これらは、$_SERVER配列には
存在します。
- $_SESSION
スクリプトのセッションに現在登録されている変数。
以前の$HTTP_SESSION_VARS配列(まだ利用可能ですが、
推奨されません)と類似しています。詳細については、
セッション処理関数 を参照ください。