PHP 全局変数 - スーパーグローバル変数
- 前のページ PHP 配列のソート
- 次のページ PHP フォーム処理
スーパーグローバル変数はPHP 4.1.0で導入され、全てのスコープで常に利用可能なビルトイン変数です。
PHP 全局変数 - スーパーグローバル変数
PHPでは、多くのプレデファインド変数が「スーパーグローバル」であり、これはスクリプトの全てのスコープで利用可能であることを意味します。関数やメソッドの中でglobal $variable;を実行することなくアクセスできます。
これらのスーパーグローバル変数は:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
このセクションでは、いくつかのスーパーグローバル変数を紹介し、後の章で他のスーパーグローバル変数について説明します。
$GLOBALS — 全てのグローバルスコープで利用可能な全ての変数を参照
$GLOBALSというグローバル変数は、PHPスクリプトのどこからでも(関数やメソッドからも)グローバル変数にアクセスするために使用されます。
PHPは、$GLOBALS[index]という名前の配列にすべてのグローバル変数を保存しています。変数の名前は配列のキーです。
以下の例では、スーパーグローバル変数 $GLOBALSの使用方法を示します:
例
<?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?>
上記の例では、zが$GLOBALS配列の変数であるため、関数の外でもアクセスできます。
PHP $_SERVER
$_SERVERという超グローバル変数は、ヘッダ、パス、スクリプトの位置に関する情報を保存しています。
以下の例では、$_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'] | サーバーが使用するCGI規格のバージョンを返します。 |
$_SERVER['SERVER_ADDR'] | 現在のスクリプトが実行されているサーバーのIPアドレスを返します。 |
$_SERVER['SERVER_NAME'] | 現在のスクリプトが実行されているサーバーのホスト名を返します(例:www.codew3c.com)。 |
$_SERVER['SERVER_SOFTWARE'] | サーバー識別文字列を返します(例:Apache/2.2.24)。 |
$_SERVER['SERVER_PROTOCOL'] | ページにアクセスした際の通信プロトコルの名前とバージョンを返します(例:「HTTP/1.0」)。 |
$_SERVER['REQUEST_METHOD'] | ページにアクセスした際に使用したリクエストメソッドを返します(例えばPOST)。 |
$_SERVER['REQUEST_TIME'] | リクエストの開始時のタイムスタンプを返します(例えば1577687494)。 |
$_SERVER['QUERY_STRING'] | クエリストリングを返します(クエリストリングでこのページにアクセスしている場合)。 |
$_SERVER['HTTP_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'] | この値は Apache サーバー設定ファイルの SERVER_ADMIN パラメータを指明しています。 |
$_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 を使用して 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 は、method="post" の HTML フォームの送信後にフォームデータを収集するために広く使用されています。$_POST は、変数の送信にもよく使用されます。
以下の例では、入力フィールドと送信ボタンを含むフォームを示しています。ユーザーが送信ボタンをクリックしてデータを送信すると、フォームデータが <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 $name = $_POST['fname']; echo $name; ?> </body> </html>
PHP $_GET
PHP $_GET は、HTML フォーム (method="get") が提出された後のフォームデータを収集するためにも使用できます。
$_GET はまた、URL 内に送信されたデータを収集することもできます。
パラメータを持つリンクを持つページがあると仮定します:
<html> <body> <a href="test_get.php?subject=PHP&web=codew3c.com">テスト $GET</a> </body> </html>
ユーザーが "テスト $GET" リンクをクリックすると、パラメータ "subject" と "web" が "test_get.php" に送信され、それらの値を "test_get.php" 内で $_GET を通じてアクセスすることができます。
以下の例は "test_get.php" 内のコードです:
例
<html> <body> <?php echo "在 " . $_GET['web'] . " 学习 " . $_GET['subject']; ?> </body> </html>
ヒント:あなたは PHP フォーム このセクションでは、$_POST と $_GET に関する知識をさらに学びます。
- 前のページ PHP 配列のソート
- 次のページ PHP フォーム処理