預定義變量自 PHP 4.1.0 起,取得外部變量的偏好方法是用下面提及的超全局變量。在此之前,人們要麼依賴 register_globals,要麼就是長長的預定義 PHP 陣列($HTTP_*_VARS)。自 PHP 5.0.0 起,長格式的 PHP 預定義變量可以通過設定 register_long_arrays 來屏蔽。 伺服器變量:$_SERVER
$_SERVER 是一個包括諸如頭訊息(header)、路徑(path)和腳本位置(script locations)的陣列。陣列的實體由 web 伺服器建立。不能保證所有的伺服器都能產生所有的訊息;伺服器可能忽略了一些訊息,或是產生了一些未在下面列出的新的訊息。這意味著,大量的這些變量在 CGI 1.1 規範中說明,所以應該仔細研究一下。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_SERVER; 訪問它,就如同使用 $HTTP_SERVER_VARS 一樣。 $HTTP_SERVER_VARS 包括著同樣的訊息,但是不是一個自動全局變量(注意:$HTTP_SERVER_VARS 和 $_SERVER 是不同的變量,PHP 處理它們的模式不同)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_SERVER 和 $HTTP_SERVER_VARS 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 或許會發現下面列出的某些 $_SERVER 元素並不可用。注意,若果以指令行模式運行 PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。
環境變量:$_ENV
在解析器運行時,這些變量從環境變量轉變為 PHP 全局變量名稱空間(namespace)。它們中的許多都是由 PHP 所運行的系統決定。完整的清單是不可能的。請檢視系統的文件以確定其特定的環境變量。 其它環境變量(內含 CGI 變量),無論 PHP 是以伺服器模組或是以 CGI 處理模式運行,都在這裡列出了。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_ENV; 來訪問它,就如同使用 $HTTP_ENV_VARS 一樣。 $HTTP_ENV_VARS 包括著同樣的訊息,但是不是一個自動全局變量(注意:$HTTP_ENV_VARS 和 $_ENV 是不同的變量,PHP 處理它們的模式不同)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_ENV 和 $HTTP_ENV_VARS 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 HTTP Cookies:$_COOKIE
通過 HTTP cookies 傳遞的變量組成的陣列。是自動全局變量。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_COOKIE; 來訪問它,就如同使用 $HTTP_COOKIE_VARS 一樣。 $HTTP_COOKIE_VARS 包括著同樣的訊息,但是不是一個自動全局變量(注意:$HTTP_COOKIE_VARS 和 $_COOKIE 是不同的變量,PHP 處理它們的模式不同)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_COOKIE 和 $HTTP_COOKIE_VARS 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 HTTP GET 變量:$_GET
通過 HTTP GET 方法傳遞的變量組成的陣列。是自動全局變量。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_GET; 來訪問它,就如同使用 $HTTP_GET_VARS 一樣。 $HTTP_GET_VARS 包括著同樣的訊息,但是不是一個自動全局變量(注意:$HTTP_GET_VARS 和 $_GET 是不同的變量,PHP 處理它們的模式不同)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_GET 和 $HTTP_GET_VARS 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 HTTP POST 變量:$_POST
通過 HTTP POST 方法傳遞的變量組成的陣列。是自動全局變量。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_POST; 來訪問它,就如同使用 $HTTP_POST_VARS 一樣。 $HTTP_POST_VARS 包括著同樣的訊息,但是不是一個自動全局變量(注意:$HTTP_POST_VARS 和 $_POST 是不同的變量,PHP 處理它們的模式不同)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_POST 和 $HTTP_POST_VARS 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 HTTP 檔案上傳變量:$_FILES
通過 HTTP POST 方法傳遞的已上傳檔案項目組成的陣列。是自動全局變量。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_FILES; 來訪問它,就如同使用 $HTTP_POST_FILES 一樣。 $HTTP_POST_FILES 包括著同樣的訊息,但是不是一個自動全局變量(請注意 PHP 是把 $HTTP_POST_FILES 和 $_FILES 這兩個變量當作不同的變量來處理的)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_FILES 和 $HTTP_POST_FILES 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 Request 變量:$_REQUEST
此關聯陣列包括 $_GET,$_POST 和 $_COOKIE 中的全部內容。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味著它在所有的腳本中都有效。在函數或方法中不需要使用 global $_REQUEST; 來訪問它。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_REQUEST 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 Session 變量:$_SESSION
包括現用的腳本中 session 變量的陣列。參閱 Session 函數文件以獲得更多訊息。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $_SESSION; 來訪問它,就如同使用 $HTTP_SESSION_VARS 一樣。 $HTTP_SESSION_VARS 包括著同樣的訊息,但是不是一個自動全局變量(請注意 PHP 是把 $HTTP_SESSION_VARS 和 $_SESSION 這兩個變量當作不同的變量來處理的)。 若果設定了 register_globals 指令,這些變量也在所有腳本中可用;也就是,分離了 $_SESSION 和 $HTTP_SESSION_VARS 陣列。關聯訊息,請參閱安全的關聯章節使用 Register Globals。這些單獨的全局變量不是自動全局變量。 Global 變量:$GLOBALS
由所有已定義全局變量組成的陣列。變量名就是該陣列的索引。 這是一個「superglobal」,或是可以描述為自動全局變量。這只不過意味這它在所有的腳本中都有效。在函數或方法中不需要使用 global $GLOBALS; 來訪問它。 前一個錯誤訊息:$php_errormsg$php_errormsg 是包括 PHP 產生的上一錯誤訊息內容的變量。該變量在發生錯誤並且 track_errors 選項開啟(預設為關閉)後才有效。 | ||