使用者自訂預定義變數
| 代碼如下 |
複製代碼 |
<?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 !!! ?> |