PHP 開発の基本チュートリアル スーパー グローバル変數(shù)
概要
前の章で説明したグローバル変數(shù)は関數(shù)內(nèi)で參照できませんが、スーパーグローバル変數(shù)は參照できます
スーパーグローバル変數(shù)は、PHP 4.1.0以降で有効になり、PHPに付屬する変數(shù)です。 system 、スクリプトのすべてのスコープで使用できます。
1. PHP スーパーグローバル変數(shù)
いくつかのスーパーグローバル変數(shù) (スーパーグローバル) が PHP で事前定義されており、スクリプトのスコープ全體で使用できることを意味します。 特別な指示なしで関數(shù)やクラスで使用できます。
PHP スーパーグローバル変數(shù)リスト:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
この章では、一般的に使用されるいくつかのスーパー グローバル変數(shù)について説明し、殘りの変數(shù)については次の數(shù)章で紹介します。
2. PHP $GLOBALS
$GLOBALS は、PHP スクリプトのスコープ全體でアクセスできる PHP のスーパーグローバル変數(shù)グループです。
$GLOBALS は、すべての変數(shù)を含むグローバル結(jié)合配列です。変數(shù)の名前は配列のキーです。
次の例では、スーパーグローバル変數(shù) $GLOBALS の使用方法を紹介します
コードは次のとおりです
<?php //定義兩個(gè)全局變量,函數(shù)內(nèi)部不可以訪問 $x = 75; $y = 25; //定義函數(shù) function addition() { //將全局變量變?yōu)槌壢肿兞浚@樣在函數(shù)內(nèi)部就可以正常訪問了 $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } //調(diào)用函數(shù) addition(); //輸出函數(shù)內(nèi)部定義的全局變量 echo $z; ?>
注: 上記の例では、z は $GLOBALS 配列內(nèi)のスーパーグローバル変數(shù)であり、外部からもアクセスできます関數(shù)
3. PHP $_SERVER
$_SERVER は、ヘッダー、パス、スクリプトの場所などの情報(bào)を含む配列です。この配列內(nèi)の項(xiàng)目は Web サーバーによって作成されます。すべてのサーバーがすべてのアイテムを提供するという保証はありません。サーバーは一部のアイテムを無視したり、ここにリストされていないアイテムを提供したりする可能性があります。
次の例は、$_SERVER の要素の使用方法を示しています:
コード例は次のとおりです:
<?php //輸出當(dāng)前腳步的文件名 echo "<h3>輸出當(dāng)前腳步的文件名</h3>"; echo $_SERVER['PHP_SELF']; echo "<hr/>"; //當(dāng)前腳步所在服務(wù)器的主機(jī)名 echo "<h3>當(dāng)前腳步所在服務(wù)器的主機(jī)名</h3>"; echo $_SERVER['SERVER_NAME']; echo "<hr/>"; //當(dāng)前請求頭中 Host echo "<h3>當(dāng)前請求頭中 Host</h3>"; echo $_SERVER['HTTP_HOST']; echo "<hr/>"; //引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址(如果存在) echo "<h3>引導(dǎo)用戶代理到當(dāng)前頁的前一頁的地址(如果存在)</h3>"; echo $_SERVER['HTTP_REFERER']; echo "<hr/>"; //用來檢查瀏覽頁面的訪問者在用什么操作系統(tǒng) echo "<h3>用來檢查瀏覽頁面的訪問者在用什么操作系統(tǒng)</h3>"; echo $_SERVER['HTTP_USER_AGENT']; echo "<hr/>"; //包含當(dāng)前腳本的路徑 echo "<h3>包含當(dāng)前腳本的路徑</h3>"; echo $_SERVER['SCRIPT_NAME']; ?>
$_SERVER 変數(shù)のその他の重要な要素を以下の表に示します:
4 . PHP $ _GET
PHP $_GET は、HTML フォーム タグでこの屬性を指定します: "method="get"。
$_GET は、URL で送信されたデータも収集できます。パラメータを含むハイパーリンク HTML ページがあると仮定します。
<html> <body> <!--創(chuàng)建個(gè)連接,連接到12_7.php,并且傳過去兩個(gè)值--> <a href="test.php?subject=PHP&web=php.cn">點(diǎn)擊,利用GET方式傳值</a> </body> </html>
ユーザーが「クリックして、GET メソッドを使用して値を渡します」リンクをクリックすると、パラメータ「subject」と「web」が「test.php」に送信されます。 "test.php" を使用できます。このデータを取得するには、ファイル內(nèi)の $_GET 変數(shù)を使用します。
次の例は、"test.php" ファイルのコードを示しています。
<html> <body> <!-- 接收12_6.php傳來的值 --> <?php echo "Study " . $_GET['subject'] . " at " . $_GET['web']; ?> </body> </html>
5. $_GET と同様に、PHP $_POST<html>
<body>
<!-- 定義一個(gè)表單,提交一個(gè)值至當(dāng)前頁面 -->
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<!-- 利用$_POST,輸出傳來的值 -->
<?php
$name = $_POST['fname'];
echo $name;
?>
</body>
</html>
注: この送信は現(xiàn)在のページに送信されるため、ページがロードされると、変數(shù) fname は未定義として表示されます。 6. PHP $_REQUEST
PHP $_REQUEST は、POST および GET によって送信されたデータを収集するために使用されます。 次の例は、入力フィールドと送信ボタンを備えたフォームを示しています。ユーザーが「送信」ボタンをクリックしてフォーム データを送信すると、フォーム データは <form> スクリプト タグで指定されたアクション屬性に送信されます。この例では、フォーム データを処理するファイルを指定します。別の PHP ファイルでデータを処理する場合は、スーパー グローバル変數(shù) $_REQUEST を使用します。フォーム內(nèi)のフィールドデータ:
コードは次のとおりです:
<html> <body> <!-- 定義一個(gè)表單,提交一個(gè)值至當(dāng)前頁面 --> <form method="post" action=""> Name: <input type="text" name="fname"> <input type="submit"> </form> <!-- 利用$__REQUEST,輸出傳來的值 --> <?php $name = $_REQUEST['fname']; echo $name; ?> </body> </html>
注: fname が未定義の理由は上記の $_POST と同じです
學(xué)習(xí)経験: 覚える必要はありませんすべてのスーパーグローバル変數(shù)については、マニュアルを確認(rèn)してください
$_GET、$_POST、$_REQUEST の違いについては、次の章で詳しく説明します