參考資料:https://www.php.net/manual/zh/reserved.variables.server.php
$_SERVER 是一個包含了諸如頭信息(header)、路徑(path)、以及腳本位置(script locations)等等信息的數組。這個數組中的項目由 Web 服務器創建。不能保證每個服務器都提供全部項目;服務器可能會忽略一些,或者提供一些沒有在這里列舉出來的項目。
$_SERVER['SERVER_ADDR']//—— 當前運行腳本所在的服務器的 IP 地址。 $_SERVER['SERVER_NAME']//——當前運行腳本所在的服務器的主機名。如果腳本運行於虛擬主機中,該名稱是由那個虛擬主機所設置的值決定。 //Note: 在 Apache 2 里,必須設置 UseCanonicalName = On 和 ServerName。 否則該值會由客戶端提供,就有可能被偽造。 上下文有安全性要求的環境里,不應該依賴此值。 $_SERVER['REQUEST_METHOD']//—— 訪問頁面使用的請求方法。例如,'POST','GET' //Note:如果請求方法為 HEAD,PHP 腳本將在發送 Header 頭信息之后終止(這意味着在產生任何輸出后,不再有輸出緩沖)。 $_SERVER['QUERY_STRING']//——query_string(查詢字符串)如果有的話,通過它進行頁面訪問。(就是可以獲取到get方式提交的數據) $_SERVER['DOCUMENT_ROOT']//——當前運行腳本所在的文檔目錄根目錄。在服務器配置文件中定義。所在更目錄的完整的磁盤地址 $_SERVER['REMOTE_ADDR']//——瀏覽當前頁面的用戶的IP地址。 $_SERVER['REMOTE_HOST']//——瀏覽當前頁面的用戶的主機名。DNS反向解析不依賴於用戶的REMOTE_ADDR //Note: 你的服務器必須被配置以便產生這個變量。例如在 Apache 中,你需要在 httpd.conf 中設置 HostnameLookups On 來產生它。 $_SERVER['HTTP_HOST']//——當前請求頭中Host:項中的內容,如果存在的話。 $_SERVER['HTTP_REFERER']//——引導用戶代理到當前頁的前一頁的地址(如果存在)。由 user agent 設置決定。並不是所有的用戶代理都會設置該項,有的還提供了修改 HTTP_REFERER 的功能。簡言之,該值並不可信。 $_SERVER['HTTP_USER_AGENT']//——當前請求頭中User-Agent:項中的內容,如果存在的話。該字符串表明了訪問該頁面的用戶代理的信息。一個典型的例子是:Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586)。除此之外,你可以通過 get_browser() 來使用該值,從而定制頁面輸出以便適應用戶代理的性能。 $_SERVER['SCRIPT_FILENAME']//——當前執行腳本的絕對路徑 $_SERVER['SCRIPT_NAME']//——包含當前腳本的當前路徑。 $_SERVER['REQUEST_URL']//——URL用來指定要訪問的頁面。 $_SERVER['GATEWAY_INTERFACE']//—— 服務器使用的 CGI 規范的版本;例如,“CGI/1.1”。 $_SERVER['SERVER_SOFTWARE']//——服務器標識字符串,在響應請求時的頭信息中給出。 $_SERVER['SERVER_PROTOCOL']//——請求頁面時通信協議的名字和版本。例如,'HTTP/1.0' $_SERVER['REQUEST_TIME']//——請求開始的時間戳,從 PHP 5.1.0 起可用。 $_SERVER['REQUEST_TIME_FLOAT']//——請求開始的時間戳,微秒級別的精准度。自 PHP 5.4.0 開始生效。 $_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:項中的內容,如果有的話。例如,"en" $_SERVER['HTTP_CONNECTION']//——當前請求頭中Connection:項中的內容,如果存在的話。例如,"Keep-Alive" $_SERVER['HTTPS']//——如果腳本是通過HTTPS訪問的,則被設為一個非空的值。 //Note: 注意當使用 IIS 上的 ISAPI 方式時,如果不是通過 HTTPS 協議被訪問,這個值將為 off。 $_SERVER['REMOTE_PORT']//——用戶機器上連到Web服務器所使用的端口。 $_SERVER['REMOTE_USER']//——經驗證的用戶 $_SERVER['REDIRECT_REMOTE_USER']//——驗證的用戶,如果請求已在內部重定向。 $_SERVER['SERVER_ADMIN']//——該值指明了Apache服務器配置文件中的SERVER_ADMIN參數。如果腳本執行在一個虛擬主機上,則該值是那個虛擬主機的值。 $_SERVER['SERVER_PORT']//——Web服務器使用的端口。默認值為“80”。如果使用了SSL安全連接,則這個值為用戶設置的HTTP的端口。 //Note: 在 Apache 2 里,為了獲取真實物理端口,必須設置 UseCanonicalName = On 以及 UseCanonicalPhysicalPort = On。 否則此值可能被偽造,不一定會返回真實端口值。 上下文有安全性要求的環境里,不應該依賴此值。 $_SERVER['SERVER_SIGNATURE']//——包含了服務器版本和虛擬主機名的字符串。 $_SERVER['SERVER_TRANSLATED']//——當前腳本在文件系統(非文檔根目錄)的基本路徑。這是在服務器進行虛擬到真實路徑的映像后的結果。 $_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['PATH_INFO']//——包含由客戶端提供的、跟在真實腳本名稱之后並且在查詢語句(query string)之前的路徑信息,如果存在的話。例如,如果當前腳本是通過 URL http://www.example.com/php/path_info.php/some/stuff?foo=bar被訪問,那么 $_SERVER['PATH_INFO'] 將包含 /some/stuff。 $_SERVER['ORIG_PATH_INFO']//——在被 PHP 處理之前,“PATH_INFO” 的原始版本。