English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。
PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。
PHP 超级全局变量列表:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
本章节我们将讲解几个常用的超级全局变量,其余变量我们在接下来几个章节会介绍到。
$GLOBALS 是PHP的一个超级全局变量组,在一个PHP脚本的全部作用域中都可以访问。
$GLOBALS 是一个包含了全部变量的全局组合数组。变量的名字就是数组的键。
以下示例介绍了如何使用超级全局变量 $GLOBALS:
<?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x']; + $GLOBALS['y']; } addition(); echo $z; ?>テストしてみる ‹/›
以上示例中 z 是一个 $GLOBALS 数组中的超级全局变量,该变量同样可以在函数外访问。
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 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.w3(codebox.com) |
$_SERVER['SERVER_SOFTWARE'] | サーバー識別文字列は、リクエストを応答する際のヘッダー情報に含まれます。(例:Apache/2.2.24) |
$_SERVER['SERVER_PROTOCOL'] | ページにアクセスする際の通信プロトコルの名前とバージョン。例えば、"HTTP/1.0"。 |
$_SERVER['REQUEST_METHOD'] | ページにアクセスする際に使用されるリクエストメソッド;例えば、"GET"、"HEAD"、"POST"、"PUT"。 |
$_SERVER['REQUEST_TIME'] | PHPのリクエスト開始時のタイムスタンプです。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'] | ユーザーエージェントが設定した前のページのURL(存在する場合)にユーザーエージェントを誘導します。これはユーザーエージェントの設定によって決定されます。すべてのユーザーエージェントがこの項目を設定することはありません。一部のユーザーエージェントは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@w3(codebox.com) |
$_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はHTMLフォームの提出データを収集するために使用されます。
以下の例では、入力フィールド(input)および送信ボタン(submit)のフォーム(form)を表示しています。 ユーザーが "Submit" ボタンをクリックしてフォームデータを送信すると、フォームデータは <form> タグの action 属性で指定されたスクリプトファイルに送信されます。 この例では、フォームデータを処理するファイルを指定しています。他のPHPファイルを使用してデータを処理したい場合は、指定されたスクリプトファイル名を変更できます。 それでは、私たちは超全体的変数 $_REQUEST を使用してフォームの input フィールドデータを収集することができます:
<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 は、HTML formタグの指定された属性「method="post"」で表单データを収集するために広く使用されます。
以下の例では、入力フィールド(input)および送信ボタン(submit)のフォーム(form)を表示しています。 ユーザーが "Submit" ボタンをクリックしてフォームデータを送信すると、フォームデータは <form> タグの action 属性で指定されたスクリプトファイルに送信されます。 この例では、フォームデータを処理するファイルを指定しています。他のPHPファイルを使用してデータを処理したい場合は、指定されたスクリプトファイル名を変更できます。 その場合、フォーム内の input フィールドデータを収集するために、スーパーグローバル変数 $_POST を使用できます:
<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>テストしてみる ‹/›
PHP $_GET は、HTML formタグの指定された属性「method="get"」で表单データを収集するために広く使用されます。
$_GET はまた、URLに送信されたデータを収集するために使用されます。
パラメータを含むHTMLリンクページがあると仮定します:
<html> <body> <a href="test_get.php?subject=PHP&web=oldtoolbag.com">Test $GET</a> </body> </html>
ユーザーが "Test $GET" リンクをクリックすると、パラメータ "subject" と "web" は "test_get.php" に送信され、"test_get.php" ファイル内で $_GET 変数を使用してこれらのデータを取得できます。
以下の例では、"test_get.php" ファイルのコードを表示しています:
<html> <body> <?php echo "Study" . $_GET['subject'] . " @ " . $_GET['web']; ?> </body> </html>テストしてみる ‹/›
ヒント: $_POST および $_GET に関するより多くの知識を学びたい場合は、私たちの PHP フォーム 章節。