php預定義變數方法

來源:互聯網
上載者:User
PHP 提供了大量的預定義變數.由於許多變數依賴於啟動並執行伺服器的版本和設定,及其它因素,所以並沒有詳細的說明文檔.一些預定義變數在 PHP 以命令列形式運行時並不生效.有關這些變數的詳細列表.

使用者自訂預定義變數

執行個體代碼如下:

<?php  echo "當前作業系統資訊".PHP_OS."<br/>";  echo '本檔案路徑和檔案名稱為:'.__FILE__.'<br />';  echo "當前PHP版本資訊".PHP_VERSION."<br/>";  ?>

系統預定義變數

$GLOBALS

包含一個引用指向每個當前指令碼的全域範圍內有效變數.該數組的鍵名為全域變數的名稱.從 PHP 3 開始存在 $GLOBALS 數組.

$_SERVER

變數由 網頁伺服器設定或者直接與當前指令碼的執行環境相關聯.類似於舊數組 $HTTP_SERVER_VARS 數組(依然有效,但反對使用).

$_GET

經由 URL 請求提交至指令碼的變數.類似於舊數組 $HTTP_GET_VARS 數組(依然有效,但反對使用).

$_POST

經由 HTTP POST 方法提交至指令碼的變數.類似於舊數組 $HTTP_POST_VARS 數組(依然有效,但反對使用).

$_COOKIE

經由 HTTP Cookies 方法提交至指令碼的變數.類似於舊數組 $HTTP_COOKIE_VARS 數組(依然有效,但反對使用).

$_FILES

經由 HTTP POST 檔案上傳而提交至指令碼的變數.類似於舊數組 $HTTP_POST_FILES 數組(依然有效,但反對使用).詳細資料請參閱 POST 方法上傳.

$_ENV

執行環境提交至指令碼的變數.類似於舊數組 $HTTP_ENV_VARS 數組(依然有效,但反對使用).

$_REQUEST

經由 GET,POST 和 COOKIE 機制提交至指令碼的變數,因此該數組並不值得信任.所有包含在該數組中的變數的存在與否以及變數的順序均按照 php.ini 中的 variables_order 配置指示來定義.此數組在 PHP 4.1.0 之前沒有直接對應的版本.參見 import_request_variables().

自 PHP 4.3.0 起,$_FILES 中的檔案資訊不再存在於 $_REQUEST 中.

Note: 當運行於命令列模式時,此數組將不會包含 argv 和 argc 條目;它們已經存在於數組 $_SERVER 中.

$_SESSION

當前註冊給指令碼會話的變數.類似於舊數組 $HTTP_SESSION_VARS 數組(依然有效,但反對使用).

$_SERVER['PHP_SELF']

當前正在執行指令碼的檔案名稱,與 document root相關.舉例來說,在URL地址為 http://example.com/test.php/foo.bar 的指令碼中使用 $_SERVER['PHP_SELF'] 將會得到 /test.php/foo.bar 這個結果.如果 PHP 以命令列方式運行,該變數無效.

$_SERVER['SERVER_NAME']

當前運行指令碼所在伺服器主機的名稱.如果該指令碼運行在一個虛擬機器主機上,該名稱是由那個虛擬機器主機所設定的值決定.例如,在URL地址為 /test.php $_SERVER['SERVER_NAME'] 將會得到 這個結果.

執行個體代碼如下:

<?php // user sent a GET header with key = secret_access, val = true, so echo $_GET["secret_access"]; // output: true echo $secret_access; // output: session_start(); // in previous logic, you set session variable $secret_access = false echo $_SESSION["secret_access"]; // output: false echo $secret_access; // output: false extract_globals();  // Globals put into "normal" variables echo $_GET["secret_access"]; // output: true echo $_SESSION["secret_access"]; // output: false echo $secret_access; // output: true // VARIABLES ARE COMPROMISED! // DO NOT USE $secret_access ! // USE $_SESSION["secret_access"] instead !!! ?>

php 4.2.0 以及後續版本中,php 指令 register_globals 的預設值為 off。這是 php 的一個主要變化。讓 register_globals 的值為 off 將影響到預定義變數集在全域範圍內的有效性。例如,為了得到 DOCUMENT_ROOT 的值,將必須使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT,又如,使用 $_GET['id'] 來代替 $id 從中擷取 id 值,亦或使用 $_ENV['HOME'] 來代替 $HOME 擷取環境變數 HOME 的值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.