English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 基础教程

PHP 高级教程

PHP & MySQL

PHP 参考手册

PHP 超全局変数

超级全局变量在PHP 4.1.0之后被启用, 是PHP系统中自带的变量,在一个脚本的全部作用域中都可用。

PHP 超全局変数

PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用。

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 是一个包含了诸如头信息(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

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

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

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 フォーム 章節。