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

❮ 前章へ 次章へ ❯

スーパーグローバルは、PHP 4.1.0で導入された、常にすべてのスコープで使用できる 組み込み変数です。


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

PHP の定義済み変数の中には "スーパーグローバル" というものがあります。 これは、スコープに関係なく常にアクセス可能であり、何か特別な手続きをせずに関数やクラス、ファイルからアクセスすることができます。

PHPのスーパーグローバル変数は次の通りです:

この章では、一部のスーパーグローバルについてのみ説明し、残りは後の章で説明します。


PHP $GLOBALS

$GLOBALS は、PHPのスーパーグローバル変数で、PHPスクリプト内のどこからでも(関数やメソッド内からでも) グローバルに変数へアクセスするために使用します。

PHPは、すべてのグローバル変数をd $GLOBALS[index] という配列に格納します。 index には、変数名が使われます。

次の例は、スーパーグローバル変数$GLOBALSを使用する方法を示しています:

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

上の例は、z は$GLOBALS配列内に存在する変数であるため、関数の外部からもアクセスできます!


PHP $_SERVER

$_SERVER は、ヘッダ、パス、およびスクリプトの場所に関する情報を保持するPHPのスーパーグローバル変数です。

下の例は、$_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'] 現在実行中のスクリプトのファイル名を返します
$_SERVER['GATEWAY_INTERFACE'] サーバが使用しているCommon Gateway Interface(CGI)のバージョンを返します
$_SERVER['SERVER_ADDR'] ホストサーバーのIPアドレスを返します
$_SERVER['SERVER_NAME'] ホストサーバの名前(www.w3schools.comなど)を返します
$_SERVER['SERVER_SOFTWARE'] サーバの識別文字列(Apache/2.2.24など)を返します
$_SERVER['SERVER_PROTOCOL'] 情報プロトコルの名前とリビジョン(HTTP/1.1など)を返します
$_SERVER['REQUEST_METHOD'] ページへのアクセスに使われたリクエストメソッド(POSTなど)を返します
$_SERVER['REQUEST_TIME'] リクエストの開始のタイムスタンプ(1377687496など)を返します
$_SERVER['QUERY_STRING'] クエリ文字列を使用してページにアクセスされた場合は、そのクエリ文字列を返します
$_SERVER['HTTP_ACCEPT'] 現在のリクエストからAcceptヘッダを返します
$_SERVER['HTTP_ACCEPT_CHARSET'] 現在のリクエストからAccept_Charsetヘッダ(utf-8、ISO-8859-1など)を返します
$_SERVER['HTTP_HOST'] 現在のリクエストからHostヘッダを返します
$_SERVER['HTTP_REFERER'] 現在のページの完全なURLを返します(すべてのユーザ・エージェントがサポートしていないため信頼はできません)
$_SERVER['HTTPS'] スクリプトはセキュアなHTTPプロトコルによって照会されますか
$_SERVER['REMOTE_ADDR'] ユーザが現在見ているページの IP アドレスを返します
$_SERVER['REMOTE_HOST'] ユーザが現在見ているページのホスト名を返します
$_SERVER['REMOTE_PORT'] Webサーバと通信するためにユーザのマシンで使っているポートを返します
$_SERVER['SCRIPT_FILENAME'] 現在実行中のスクリプトの絶対パス名を返します
$_SERVER['SERVER_ADMIN'] Webサーバ構成ファイルのSERVER_ADMINディレクティブに与えられた値を返します (スクリプトが仮想ホストで実行されている場合は、その仮想ホストに定義された値になります)(someone@w3schools.comなど)
$_SERVER['SERVER_PORT'] Webサーバが通信に使用しているサーバマシンのポートを返します(80など)
$_SERVER['SERVER_SIGNATURE'] サーバで生成されたページに追加されるサーバのバージョンと仮想ホスト名を返します
$_SERVER['PATH_TRANSLATED'] 現在のスクリプトのファイルシステムベースのパスを返します
$_SERVER['SCRIPT_NAME'] 現在のスクリプトのパスを返します
$_SERVER['SCRIPT_URI'] 現在のページのURIを返します

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
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field
    $name = $_REQUEST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>
例の実行 »

PHP $_POST

PHP $_POST は、method="post"でHTMLフォームで送信されたフォームデータの受取りに広く使われています。

次の例は、入力フィールドと送信ボタン付きのフォームを示しています。 ユーザが、「送信」をクリックしてデータを送信すると、フォームデータは <form> タグのaction属性で指定されたファイルに送信されます。 この例では、フォームデータの処理に、このファイル自身を指定しています。フォームデータの処理に別のPHPファイルを使用したい場合は、 そのファイル名に置き換えてください。 その後、入力フィールドの値を収受取るためにスーパーグローバル変数 $_POST を使用することができます:

<html>
<body>

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

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field
    $name = $_POST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>
例の実行 »

PHP $_GET

PHP $_GET は、method="get"でHTMLフォームで送信されたフォームデータの受取りに使用することができます。

$_GET は、送信されたURL内のデータを受取ることもできます。

パラメータ付きのハイパーリンクを持つHTMLページがあったとします:

<html>
<body>

<a href="test_get.php?subject=PHP&web=W3schools.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'] . " at " . $_GET['web'];
?>

</body>
</html>
例の実行 »

チップ: PHPフォームの章で$$_POSTと$_GETの詳細を学習します。


❮ 前章へ 次章へ ❯