スーパーグローバル変数

スーパーグローバル変数とは、あらかじめ最初からPHPに定義されていて、プログラムのどこからでもアクセスできる変数のことです。これらの変数の多くは、 実行するサーバーの種類、サーバーのバージョンおよび設定に依存しています。各スーパーグローバル変数を以下に記載しています。

$GLOBALS(グローバル変数)

グローバルスコープで定義されている全ての変数を格納している連想配列です。

<?php

$a=100; $b=1;
function keisan(){
    $GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
keisan();
echo $b;//101と出力されます。

?>

このようにグローバル変数を使用すると、ユーザ定義関数外で定義されている変数をユーザ定義関数内でも使用できます。

$_SERVER(サーバー変数)

ヘッダ、スクリプトパスなどwebサーバから取得できる情報を連想配列に格納しています。

<?php
var_dump($_SERVER["HTTP_HOST"]);
?>

◆実行結果
string(27) "phptextbook.elephantech.net"

サーバ変数の一覧を以下に記載します。

名前 意味
$_SERVER["HTTP_HOST"] HTTPのHost:ヘッダ
$_SERVER["HTTP_USER_AGENT"] HTTPのUser-Agent:ヘッダ
$_SERVER["HTTP_ACCEPT"] HTTPのAccept:ヘッダ
$_SERVER["HTTP_ACCEPT_LANGUAGE"] HTTPのAccept-Language:ヘッダ
$_SERVER["HTTP_ACCEPT_ENCODING"] HTTPのAccept-Encoding:ヘッダ
$_SERVER["HTTP_REFERER"] リファラ(このページに遷移する前にユーザーが閲覧していたページのURL)
$_SERVER["HTTP_CONNECTION"] HTTPのConnection:ヘッダ
$_SERVER["HTTP_CACHE_CONTROL"] Proxyサーバーを利用している場合のキャッシュの測度
$_SERVER["PATH"] Webサーバーのファイルシステム上のパス
$_SERVER["SERVER_SIGNATURE"] サーバー上で生成される、サーバーのバージョン名とバーチャルホスト名の文字列
$_SERVER["SERVER_SOFTWARE"] レスポンスヘッダ上に書かれている、 サーバーの認識文字列
$_SERVER["SERVER_NAME"] Webサーバーのホスト名。バーチャルホストが設定されている場合は、バーチャルホスト名となります
$_SERVER["SERVER_ADDR"] WebサーバのIPアドレス
$_SERVER["SERVER_PORT"] Webサーバの通信ポート
$_SERVER["REMOTE_ADDR"] ユーザーの IP アドレス
$_SERVER["DOCUMENT_ROOT"] ドキュメントルートのパス
$_SERVER["SERVER_ADMIN"] Webサーバに設定されているサーバ管理者
$_SERVER["SCRIPT_FILENAME"] 現在実行されているPHPスクリプトの絶対パス
$_SERVER["REMOTE_PORT"] Web サーバーへの通信に使用されているポート番号
$_SERVER["GATEWAY_INTERFACE"] サーバーが使用している CGI のバージョン
$_SERVER["SERVER_PROTOCOL"] リクエストされた際のプロトコル名とバージョン
$_SERVER["REQUEST_METHOD"] GET、HEAD、POST、PUT などのページにアクセスする際に使用されたリクエストのメソッド名
$_SERVER["QUERY_STRING"] 検索引数。たとえば、 http://test.com/test.php?test=123 のようなURLの場合、「test=123」の部分
$_SERVER["REQUEST_URI"] ページにアクセスするために指定された URI
$_SERVER["SCRIPT_NAME"] 現在のPHPスクリプトファイルのパス
$_SERVER["PHP_SELF"] ドキュメントルートからみた、現在のPHPスクリプトファイルのファイル名
$_SERVER["REQUEST_TIME"] リクエストの開始時のタイムスタンプ

$_GET(HTTP GET変数)

HTTP GETメソッドを通して渡された情報が連想配列形式にて格納されている変数です。 例えば、ユーザーが http://www.test.com/?mode=Test と入力したとします。 上の例の出力は、 たとえば以下のようになります。


<?php
	echo 'パラメータmodeの値:' . htmlspecialchars($_GET["mode"]) . '!';
?>

◆実行結果
パラメータmodeの値:Test!

このように、HTTP GETメソッドの値は、$_GET変数にて取得できます。

$_POST(HTTP POST変数)

HTTP POSTメソッドを通して渡された情報が連想配列形式にて格納されている変数です。 ユーザーが mode=Test と POST したとします。 この場合は、以下のようにHTTP POSTメソッドの値を取得できます。


<!-- 送信元のフォーム -->
<form action="" method="post">
<input type="hidden" name="mode" size="Test"/>
<input type="submit" value="POST送信" />
</form>

<!-- POSTデータを取得するPHPスクリプト -->
<?php
	echo 'パラメータmodeの値:' . htmlspecialchars($_POST["mode"]) . '!';
?>

◆実行結果
パラメータmodeの値:Test!

$_COOKIE(COOKIE変数)

HTTPクッキーの情報が連想配列形式にて格納されています。例えば、"mode" というクッキーが事前に設定されているものとします。この場合は、以下のように値を取得できます。


<?php
	echo 'パラメータmodeの値:' . htmlspecialchars($_COOKIE["mode"]) . '!';
?>

◆実行結果
パラメータmodeの値:Test!

$_ENV(環境変数)

環境変数として現在のPHPスクリプトに渡された連想配列形式の変数です。環境変数の多くは、PHPが実行されているシェルに依存しています。システムが異なればシェルも異なりますので、環境に応じて定義される値、取得できる値は異なります。例えば私の環境では、以下のような値が取得できます。

<?php
	var_dump($_ENV);
?>

◆実行結果
array(6) {
  ["TERM"]=>
  string(5) "xterm"
  ["PATH"]=>
  string(29) "/sbin:/usr/sbin:/bin:/usr/bin"
  ["PWD"]=>
  string(1) "/"
  ["LANG"]=>
  string(1) "C"
  ["SHLVL"]=>
  string(1) "2"
  ["_"]=>
  string(15) "/usr/sbin/httpd"
}

$_FILES(HTTP ファイルアップロード変数)

HTTP POSTメソッドにて、アップロードされたファイル情報の情報が連想配列形式に格納されている変数です。


<!-- 送信元のファイルアップロードフォーム -->
<form enctype="multipart/form-data" action = "" method = "post" >
<input type="file" name="file1">
<input type="submit" name="FILEアップロード" value="FILEアップロード">
</form>

<!-- ファイルアップロードのPOSTデータを取得するPHPスクリプト -->
<?php
	// アップロードファイル情報を表示する。
	echo "ファイル名           : " , $_FILES["file1"]["name"] , "<br />";
	echo "MIMEタイプ           : " , $_FILES["file1"]["type"] , "<br />";
	echo "ファイルサイズ       : " , $_FILES["file_data1"]["size"] , "<br />";
	echo "テンポラリファイル名 : " , $_FILES["file1"]["tmp_name"] , "<br />";
	echo "エラーコード         : " , $_FILES["file1"]["error"] , "<br />";
?>

変数 $_FILESの取得できる配列一覧を以下に記載します。

名前 意味
$_FILES['UploadFile']['name'] アップロードファイル名
$_FILES['UploadFile']['type'] MIMEタイプ
$_FILES['UploadFile']['tmp_name'] テンポラリファイル名
$_FILES['UploadFile']['error'] エラーコード
$_FILES['UploadFile']['size'] ファイルサイズ

$_REQUEST(リクエスト変数)

$_GET、$_POST、$_COOKIE、$_FILESのすべての内容を連想配列に格納している変数です。複数のスーパーグローバル変数をまとめている変数です。

$_SESSION(セッション変数)

セッション情報が連想配列形式にて格納されています。例えば、"mode" というセッション情報が事前に設定されているものとします。この場合は、以下のように値を取得できます。


<?php
	echo 'パラメータmodeの値:' . htmlspecialchars($_SESSION["mode"]) . '!';
?>

◆実行結果
パラメータmodeの値:Test!

このページの先頭へ