2015年8月12日 星期三

超全域變數—$_SERVER

$_SERVER
$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的陣列。
這個陣列中的項目由Web伺服器產生。

在$_SERVER 中,你也許能夠,也許不能夠找到下面的這些元素。
注意,如果以命令行方式運行PHP,下面列出的元素幾乎沒有有效的(或是沒有任何實際意義的)。

'PHP_SELF'
當前執行腳本的文件名,與document root 有關。
例如,在地址為http://example.com/test.php/ 的腳本中使用$_SERVER['PHP_SELF']
將得到/test.php。
'argv'
傳遞給該腳本的參數的陣列。當腳本以命令行方式運行時,argv 變數傳遞給程序C 語言樣式的命令行參數。
當通過GET 方式調用時,該變數包含query string。
'argc'
包含命令行模式下傳遞給該腳本的參數的數目(如果運行在命令行模式下)。
'GATEWAY_INTERFACE'
伺服器使用的CGI 規範的版本;例如,“CGI/1.1”。
'SERVER_ADDR'
當前運行腳本所在的伺服器的IP 地址。
'SERVER_NAME'
當前運行腳本所在的伺服器的主機名。如果腳本運行於虛擬主機中,該名稱是由那個虛擬主機所設置的值決定。
'SERVER_SOFTWARE'
伺服器標識字符串,在響應請求時的頭信息中給出。
'SERVER_PROTOCOL'
請求頁面時通信協議的名稱和版本。例如,“HTTP/1.0”。
'REQUEST_METHOD'
訪問頁面使用的請求方法;例如,“GET”, “HEAD”,“POST”,“PUT”。
如果請求方法為HEAD,PHP 腳本將在發送Header 頭信息之後終止(這意味著在產生任何輸出後,不再有輸出緩衝)。
'REQUEST_TIME'
請求開始時的時間戳。從 PHP 5.1.0 起可用。
'REQUEST_TIME_FLOAT'
請求開始時的時間戳,微秒級別的精準度。自 PHP 5.4.0 開始生效。
'QUERY_STRING'
query string(查詢字串),如果有的話,通過它進行頁面訪問。
'DOCUMENT_ROOT'
當前運行腳本所在的文檔根目錄。在伺服器配置文件中定義。
'HTTP_ACCEPT'
當前請求頭中Accept: 項的內容,如果存在的話。
'HTTP_ACCEPT_CHARSET'
當前請求頭中Accept-Charset: 項的內容,如果存在的話。例如:“is​​o-8859-1,*,utf-8”。
'HTTP_ACCEPT_ENCODING'
當前請求頭中Accept-Encoding: 項的內容,如果存在的話。例如:“gzip”。
'HTTP_ACCEPT_LANGUAGE'
當前請求頭中Accept-Language: 項的內容,如果存在的話。例如:“en”。
'HTTP_CONNECTION'
當前請求頭中Connection: 項的內容,如果存在的話。例如:“Keep-Alive”。
'HTTP_HOST'
當前請求頭中Host: 項的內容,如果存在的話。
'HTTP_REFERER'
引導用戶代理到當前頁的前一頁的地址(如果存在)。由 user agent 設置決定。並不是所有的用戶代理都會設置該項,有的還提供了修改HTTP_REFERER 的功能。簡言之,該值並不可信。
'HTTP_USER_AGENT'
當前請求頭中User-Agent: 項的內容,如果存在的話。該字符串表明了訪問該頁面的用戶代理的信息。一個典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。除此之外,你可以通過get_browser() 來使用該值,從而定制頁面輸出以便適應用戶代理的性能。
'HTTPS'
如果腳本是通過HTTPS 協議被訪問,則被設為一個非空的值。
Note: 注意當使用IIS 上的ISAPI 方式時,如果不是通過HTTPS 協議被訪問,這個值將為off。
'REMOTE_ADDR'
瀏覽當前頁面的用戶的 IP 地址。
'REMOTE_HOST'
瀏覽當前頁面的用戶的主機名。 DNS 反向解析不依賴於用戶的REMOTE_ADDR。
Note: 你的伺服器必須被配置以便產生這個變數。例如在Apache 中,你需要在httpd.conf 中設置HostnameLookups On 來產生它。參見 gethostbyaddr()。
'REMOTE_PORT'
用戶機器上連接到Web 伺服器所使用的端口號。
'REMOTE_USER'
經驗證的用戶
'REDIRECT_REMOTE_USER'
驗證的用戶,如果請求已在內部重定向。
'SCRIPT_FILENAME'
當前執行腳本的絕對路徑。
'SERVER_ADMIN'
該值指明了Apache 伺服器配置文件中的SERVER_ADMIN 參數。如果腳本運行在一個虛擬主機上,則該值是那個虛擬主機的值。
'SERVER_PORT'
Web 伺服器使用的端口。預設值為 “80”。如果使用SSL 安全連接,則這個值為用戶設置的HTTP 端口。
'SERVER_SIGNATURE'
包含了伺服器版本和虛擬主機名的字符串。
'PATH_TRANSLATED'
當前腳本所在文件系統(非文檔根目錄)的基本路徑。這是在伺服器進行虛擬到真實路徑的映像後的結果。
Note: 自PHP 4.3.2 起,PATH_TRANSLATED 在Apache 2 SAPI 模式下不再和Apache 1 一樣隱含賦值,而是若Apache 不生成此值,PHP 便自己生成並將其值放入SCRIPT_FILENAME 伺服器常量中。這個修改遵守了CGI 規範,PATH_TRANSLATED 僅在PATH_INFO 被定義的條件下才存在。 Apache 2 用戶可以在httpd.conf 中設置AcceptPathInfo = On 來定義PATH_INFO。
'SCRIPT_NAME'
包含當前腳本的路徑。這在頁面需要指向自己時非常有用。 __FILE__ 常量包含當前腳本(例如包含文件)的完整路徑和文件名。
'REQUEST_URI'
URI 用來指定要訪問的頁面。例如 “/index.html”。
'PHP_AUTH_DIGEST'
當作為Apache 模塊運行時,進行HTTP Digest 認證的過程中,此變數被設置成客戶端發送的“Authorization” HTTP 頭內容(以便作進一步的認證操作)。
'PHP_AUTH_USER'
當PHP 運行在Apache 或IIS(PHP 5 是ISAPI)模塊方式下,並且正在使用HTTP 認證功能,這個變數便是用戶輸入的用戶名。
'PHP_AUTH_PW'
當PHP 運行在Apache 或IIS(PHP 5 是ISAPI)模塊方式下,並且正在使用HTTP 認證功能,這個變數便是用戶輸入的密碼。
'AUTH_TYPE'
當PHP 運行在Apache 模塊方式下,並且正在使用HTTP 認證功能,這個變數便是認證的類型。
'PATH_INFO'
包含由客戶端提供的、跟在真實腳本名稱之後並且在查詢語句(query string)之前的路徑信息,如果存在的話。例如,如果當前腳本是通過URL http://www.example.com/php/path_info.php/some/stuff?foo=bar 被訪問,那麼$_SERVER['PATH_INFO'] 將包含/some/stuff。
'ORIG_PATH_INFO'
在被PHP 處理之前,“PATH_INFO” 的原始版本。

範例
Example #1 $_SERVER 範例
<?php
echo $_SERVER['SERVER_NAME'];
?>
以上例程的輸出類似於:
www.example.com