PHP $_SERVER 變量
$_SERVER 是一個包含諸如頭信息(header)、路徑(path)和腳本位置(script locations)的數組。它是 PHP 中一個超級全局變量,我們可以在 PHP 程序的任何地方直接訪問它。
$_SERVER 包含着眾多的信息,你可以嘗試直接打印它:
print_r($_SERVER);
限於篇幅,在此不再列出打印的結果,且不同的服務器上,打印出的結果也是有差異的。
$_SERVER 數組元素
更多情況下,我們只需要 $_SERVER 數組中的某些元素(數組單元)。$_SERVER 數組包含的元素如下:
頁面程序相關
- $_SERVER['PHP_SELF']:相對於網站根目錄的路徑及 PHP 程序名稱,與 document root 相關。
- $_SERVER['HTTP_REFERER']:鏈接到當前頁面的前一頁面的 URL 地址。
- $_SERVER['SCRIPT_NAME']:相對於網站根目錄的路徑及 PHP 程序文件名稱 。
- $_SERVER['REQUEST_URI']:訪問此頁面所需的 URI 。
- $_SERVER['SCRIPT_FILENAME']:當前運行 PHP 程序的絕對路徑及文件名。
- $_SERVER['PATH_TRANSLATED']:當前 PHP 程序所在文件系統(不是文檔根目錄)的基本路徑。
- $_SERVER['QUERY_STRING']:查詢(query)的字符串(URL 中第一個問號 ? 之后的內容但不包括 # 后面的內容)。
- $_SERVER['argv']:傳遞給當前 PHP 程序的參數。
- $_SERVER['argc']:命令行模式下,包含傳遞給程序的命令行參數的個數。
- $_SERVER['REQUEST_TIME']:請求開始時的時間戳,從 PHP 5.1.0 起有效。
- $_SERVER['REQUEST_METHOD']:訪問頁面時的請求方法,例如:“GET”、“HEAD”,“POST”或“PUT”。
- $_SERVER['HTTP_ACCEPT']:當前請求的 Accept: 頭信息的內容。
- $_SERVER['HTTP_ACCEPT_CHARSET']:當前請求的 Accept-Charset: 頭信息的內容。例如:“iso-8859-1,*,utf-8”。
- $_SERVER['HTTP_ACCEPT_ENCODING']:當前請求的 Accept-Encoding: 頭信息的內容。例如:“gzip”。
- $_SERVER['HTTP_ACCEPT_LANGUAGE']:當前請求的 Accept-Language: 頭信息的內容。例如:“zh-cn”。
- $_SERVER['HTTP_CONNECTION']:當前請求的 Connection: 頭信息的內容。例如:“Keep-Alive”。
- $_SERVER['HTTP_HOST']:當前請求的 Host: 頭信息的內容。
- $_SERVER['HTTPS']:如果 PHP 程序是通過 HTTPS 協議被訪問,則被設為一個非空的值。
- $_SERVER['PHP_AUTH_DIGEST']:當作為 Apache 模塊運行時,進行 HTTP Digest 認證的過程中,此變量被設置成客戶端發送的“Authorization”HTTP 頭內容(以便作進一步的認證操作)。
- $_SERVER['PHP_AUTH_USER']:當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是用戶輸入的用戶名。
- $_SERVER['PHP_AUTH_PW']:當 PHP 運行在 Apache 或 IIS(PHP 5 是 ISAPI)模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是用戶輸入的密碼。
- $_SERVER['AUTH_TYPE']:當 PHP 運行在 Apache 模塊方式下,並且正在使用 HTTP 認證功能,這個變量便是認證的類型。
服務器端相關
- $_SERVER['DOCUMENT_ROOT']:當前運行 PHP 程序所在的文檔根目錄,在服務器配置文件中定義。
- $_SERVER['GATEWAY_INTERFACE']:服務器使用的 CGI 規范的版本,例如:“CGI/1.1”。
- $_SERVER['SERVER_ADDR']:當前運行 PHP 程序所在的服務器的 IP 地址。
- $_SERVER['SERVER_NAME']:當前運行 PHP 程序所在的服務器的名稱。
- $_SERVER['SERVER_ADMIN']:Apache 服務器配置文件中的 SERVER_ADMIN 參數。
- $_SERVER['SERVER_PORT']:服務器所使用的端口。如果使用 SSL 安全連接,則這個值為用戶設置的 HTTP 端口。
- $_SERVER['SERVER_SIGNATURE']:包含服務器版本和虛擬主機名的字符串。
- $_SERVER['SERVER_SOFTWARE']:服務器標識的字串,在響應請求時的頭信息中給出。
- $_SERVER['SERVER_PROTOCOL']:請求頁面時通信協議的名稱和版本,例如:“HTTP/1.0”。
其他雜項
- $_SERVER['HTTP_USER_AGENT']:當前請求的 User-Agent: 頭信息的內容,該字符串表明了訪問該頁面的用戶代理的信息。
- $_SERVER['REMOTE_ADDR']:正在瀏覽當前頁面用戶的 IP 地址。
- $_SERVER['REMOTE_HOST']:正在瀏覽當前頁面用戶的主機名。
- $_SERVER['REMOTE_PORT']:用戶連接到服務器時所使用的端口。
注意,如果以命令行方式運行 PHP,上面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。
本章節內容共分 6 部分:
- 1. PHP 服務器變量 $_SERVER
- 2. PHP 服務器環境變量 $_ENV
- 3. PHP 使用 $_SERVER['PHP_SELF'] 獲取當前頁面地址及其安全性問題
- 4. PHP $_SERVER['HTTP_REFERER'] 獲取前一頁面的 URL 地址
- 5. PHP $_SERVER['PHP_SELF']、$_SERVER['SCRIPT_NAME'] 與 $_SERVER['REQUEST_URI'] 之間的區別
- 6. PHP $_SERVER['SCRIPT_FILENAME'] 與 __FILE__ 的區別
原文:http://www.5idev.com/p-php_server.shtml