PHPスーパーグローバル変数


スーパー グローバル変数は、PHP 4.1.0 以降で有効になりました。これらは、PHP システムに付属する変数であり、スクリプトのスコープ全体で使用できます。


PHP スーパーグローバル変数

いくつかのスーパーグローバル変数は PHP で事前定義されており、スクリプトのスコープ全体で使用できることを意味します。 特別な指示なしで関数やクラスで使用できます。

PHPのスーパーグローバル変数とは何ですか?

PHP スーパーグローバル変数リスト:

$GLOBALS

$_SERVER

$_REQUEST

$_POST

$_GET

$_FILES

$_ENV

$_COOKIE

$_SESSION

この章の内容よく使用されるいくつかのスーパー グローバル変数について説明し、残りの変数については次の数章で紹介します。


PHP $GLOBALS

$GLOBALS は、PHP スクリプトのスコープ全体でアクセスできる PHP のスーパーグローバル変数グループです。

$GLOBALS は、すべての変数を含むグローバル結合配列です。変数の名前は配列のキーです。

次の例では、スーパー グローバル変数 $GLOBALS の使用方法を紹介します。

<?php 
$x = 75; 
$y = 25;
 
function addition() 
{ 
    $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
 
addition(); 
echo $z; 
?>

上記の例では、z は $GLOBALS 配列内のスーパー グローバル変数であり、関数の外部からもアクセスできます。


PHP $_SERVER

$_SERVER は、ヘッダー、パス、スクリプトの場所などの情報を含む配列です。この配列内の項目は Web サーバーによって作成されます。すべてのサーバーがすべてのアイテムを提供するという保証はありません。サーバーは一部のアイテムを無視したり、ここにリストされていないアイテムを提供したりする可能性があります。

次の例は、$_SERVER の要素の使用方法を示しています:

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

次の表は、$_SERVER 変数のすべての重要な要素を示しています:

要素/コード説明
$_SERVER['PHP_SELF'] ドキュメントルートに関連する、現在実行中のスクリプトのファイル名。たとえば、http://example.com/test.php/foo.bar のスクリプトで $_SERVER['PHP_SELF'] を使用すると、/test.php/foo.bar になります。 __FILE__ 定数には、現在の (つまり、ファイルを含む) ファイルの絶対パスとファイル名が含まれます。 PHP バージョン 4.3.0 以降、PHP がコマンド ライン モードで実行されている場合、この変数にはスクリプト名が含まれます。この変数は以前のバージョンでは使用できません。
$_SERVER['GATEWAY_INTERFACE'] サーバーで使用される CGI 仕様のバージョン (例: "CGI/1.1")。
$_SERVER['SERVER_ADDR'] スクリプトが現在実行されているサーバーの IP アドレス。
$_SERVER['SERVER_NAME'] スクリプトが現在実行されているサーバーのホスト名。スクリプトが仮想ホスト上で実行されている場合、名前はその仮想ホストに設定された値によって決まります。 (例: www.php.cn)
$_SERVER['SERVER_SOFTWARE']サーバー識別文字列は、リクエストに応答する際のヘッダー情報に指定されます。 (例: Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] ページをリクエストするときの通信プロトコルの名前とバージョン。たとえば、「HTTP/1.0」です。
$_SERVER['REQUEST_METHOD'] ページへのアクセスに使用されるリクエスト メソッド。たとえば、「GET」、「HEAD」、「POST」、「PUT」。
$_SERVER['REQUEST_TIME']リクエストが開始されたときのタイムスタンプ。 PHP 5.1.0 以降で利用可能です。(例: 1377687496)
$_SERVER['QUERY_STRING']クエリ文字列(クエリ文字列)があれば、それを通じてページアクセスが実行されます。
$_SERVER['HTTP_ACCEPT'] 現在のリクエストヘッダー内の Accept: 項目の内容 (存在する場合)。
$_SERVER['HTTP_ACCEPT_CHARSET'] 現在のリクエストヘッダー内の Accept-Charset: 項目の内容 (存在する場合)。例: 「iso-8859-1,*,utf-8」。
$_SERVER['HTTP_HOST']現在のリクエストヘッダー内の Host: 項目の内容 (存在する場合)。
$_SERVER['HTTP_REFERER'] 現在のページの前のページのアドレス (存在する場合) にユーザー エージェントを誘導します。ユーザーエージェント設定によって決定されます。すべてのユーザーエージェントがこの項目を設定するわけではなく、一部のユーザーエージェントは HTTP_REFERER を変更する機能も提供します。要するに、その値は信頼できません。 )
$_SERVER['HTTPS']スクリプトが HTTPS プロトコル経由でアクセスされる場合は、空ではない値に設定します。
$_SERVER['REMOTE_ADDR'] 現在のページを閲覧しているユーザーの IP アドレス。
$_SERVER['REMOTE_HOST'] 現在のページを閲覧しているユーザーのホスト名。 DNS 逆引き解決は、ユーザーの REMOTE_ADDR には依存しません。
$_SERVER['REMOTE_PORT'] ユーザーのマシン上の Web サーバーに接続するために使用されるポート番号。
$_SERVER['SCRIPT_FILENAME']現在実行中のスクリプトの絶対パス。
$_SERVER['SERVER_ADMIN'] この値は、Apache サーバー構成ファイルの SERVER_ADMIN パラメーターを指定します。スクリプトが仮想ホスト上で実行されている場合、この値はその仮想ホストの値になります。 (例:someone@php.cn)
$_SERVER['SERVER_PORT'] Web サーバーによって使用されるポート。デフォルト値は「80」です。 SSL セキュア接続を使用する場合、この値はユーザーが設定した HTTP ポートです。
$_SERVER['SERVER_SIGNATURE']には、サーバーのバージョンと仮想ホスト名の文字列が含まれます。
$_SERVER['PATH_TRANSLATED'] 現在のスクリプトが配置されているファイル システムのベース パス (ドキュメント ルート ディレクトリではありません)。これは、サーバーが仮想パスから実際のパスにイメージ化された後の結果です。
$_SERVER['SCRIPT_NAME'] 現在のスクリプトへのパスが含まれます。これは、ページがそれ自体を指す必要がある場合に便利です。 __FILE__ 定数には、現在のスクリプト (インクルード ファイルなど) の完全なパスとファイル名が含まれます。
$_SERVER['SCRIPT_URI']URIは、アクセスするページを指定するために使用されます。たとえば、「/index.html」です。



PHP $_REQUEST

PHP $_REQUEST は、HTML フォームによって送信されたデータを収集するために使用されます。

次の例は、入力フィールドと送信ボタンのあるフォームを示しています。 ユーザーが「送信」ボタンをクリックしてフォームデータを送信すると、<form>タグのaction属性に指定されたスクリプトファイルにフォームデータが送信されます。 この例では、フォーム データを処理するファイルを指定します。別の PHP ファイルでこのデータを処理する場合は、指定したスクリプト ファイル名を変更できます。 次に、スーパー グローバル変数 $_REQUEST を使用して、次の形式で入力フィールド データを収集できます。

Example

<html>
<body>

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

<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>

</body>
</html>

PHP $_POST

PHP $_POST は、HTML フォームでフォーム データを収集するために広く使用されています。 tag この属性を指定します: "method="post".

次の例は、入力フィールドと送信ボタンを備えたフォームを示しています。ユーザーが「送信」ボタンをクリックしてフォームデータを送信すると、フォームのデータは次のようになります。この例では、フォーム データを処理するファイルを指定します。別の PHP ファイルでデータを処理する場合は、指定したスクリプトを変更できます。次に、スーパー グローバル変数 $_POST を使用して、次の形式で入力フィールド データを収集できます。 , この属性を HTML フォームタグ内に指定します:「method="get」。

$_GET は、URL で送信されたデータを収集することもできます。


パラメータを含むハイパーリンクされた HTML ページがあるとします。

<html>
<body>

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

<?php 
$name = $_POST['fname']; 
echo $name; 
?>

</body>
</html>
ユーザーがリンク「Test $GET」をクリックすると、パラメータ「subject」と「web」が「test_get.php」に送信されます。このデータを取得するには「test_get.php」ファイルを使用します。 次の例は、「test_get.php」ファイルのコードを示しています:

<html>
<body>
<a href="test_get.php?subject=PHP&web=runoob.com">Test $GET</a>
</body>
</html>

ヒント: $_POST と $_GET について詳しく知りたい場合は、

PHP フォーム

の章を参照してください。