PHP グローバル変数 - スーパーグローバル変数
PHP 4.1.0 で導入されたスーパーグローバル変数は、すべてのスコープで常に使用できる組み込み変数です。
PHP グローバル変数 - スーパーグローバル変数
PHP の事前定義変数の多くは「スーパーグローバル」です。これは、スクリプトのスコープ全体で使用できることを意味します。これらは、グローバル
$variablename; を実行せずに、関数またはメソッド内でアクセスできます。
PHPスーパーグローバル変数リスト:
· $GLOBALS
· $_S
· $_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']; ?>プログラムの実行結果:
/Basis/superglobals/superglobals_1.php
localhost
localhost
http://localhostの要素の使用方法を示しています。 /Basis/superglobals/
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0
/Basis/superglobals/superglobals_1.php以下の表を参照してください。 重要な要素$ _Server変数の説明ドキュメントルート。たとえば、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['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__ 定数には、現在のスクリプト (インクルード ファイルなど) の完全なパスとファイル名が含まれます。 PHP $_REQUEST
PHP $_REQUEST は、HTML フォームによって送信されたデータを収集するために使用されます。
例
次の例は、入力フィールドと送信ボタンのあるフォームを示しています。 ユーザーが「送信」ボタンをクリックしてフォームデータを送信すると、<form>タグのaction属性に指定されたスクリプトファイルにフォームデータが送信されます。 この例では、フォーム データを処理するファイルを指定します。別の PHP ファイルでこのデータを処理する場合は、指定したスクリプト ファイル名を変更できます。 次に、スーパー グローバル変数 $_REQUEST を使用して、次の形式で入力フィールド データを収集できます:
<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>プログラムを実行して確認してください
入力ボックスにデータを入力してクエリを送信してください
ヒント :action: action="app.php" など、特定のファイルに送信するように指定できます。上記の
の例では、php ファイルを作成したくないため、この段落 <?php echo
$_SERVER['PHP_SELF'];?> は、自分のページに送信することを意味します
PHP $_POST
$_POST 変数はデータを収集するために使用されますfrom method="post" 形式の値
例
スーパーグローバル変数 $_POST を使用して、次の形式の入力フィールド データを収集します。
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="name"> Age :<input type="text" name="age"> <input type="submit"> </form> <?php $name = $_POST['name']; $age=$_POST['age']; echo $name ."<br/>"; echo $age; ?> </body> </html>
PHP $_GET
PHP $_GET は、HTML フォーム タグでこの属性を指定するためにも広く使用されています: "method="get"。
GETメソッドでフォームから送信された情報は誰でも見ることができ(ブラウザのアドレスバーに表示されます)、送信できる情報量には制限があります(最大100
文字)。
インスタンス
スーパーグローバル変数$_GETを使用して、次の形式で入力フィールドデータを収集します:
<html> <body> <form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="name"> Age :<input type="text" name="age"> <input type="submit"> </form> <?php $name = $_GET['name']; $age=$_GET['age']; echo $name ."<br/>"; echo $age; ?> </body> </html>プログラムの実行結果:
ヒント : $_POST と $_GET について詳しく知りたい場合は、PHP フォームの章を参照してください。