天天看點

PHP $_SERVER 詳解

元素/代碼    描述
$_SERVER['PHP_SELF']    目前執行腳本的檔案名,與 document root 有關。
$_SERVER['GATEWAY_INTERFACE']    伺服器使用的 CGI 規範的版本。
$_SERVER['SERVER_ADDR']    目前運作腳本所在的伺服器的 IP 位址。
$_SERVER['SERVER_NAME']    目前運作腳本所在的伺服器的主機名。如果腳本運作于虛拟主機中,該名稱是由那個虛拟主機所設定的值決定。
$_SERVER['SERVER_SOFTWARE']    伺服器辨別字元串,在響應請求時的頭資訊中給出。
$_SERVER['SERVER_PROTOCOL']    請求頁面時通信協定的名稱和版本。
$_SERVER['REQUEST_METHOD']    通路頁面使用的請求方法。
$_SERVER['REQUEST_TIME']    請求開始時的時間戳。從 PHP 5.1.0 起可用。
$_SERVER['QUERY_STRING']    query string(查詢字元串),如果有的話,通過它進行頁面通路。
$_SERVER['HTTP_ACCEPT']    目前請求頭中 Accept: 項的内容,如果存在的話。
$_SERVER['HTTP_ACCEPT_CHARSET']    目前請求頭中 Accept-Charset: 項的内容,如果存在的話。
$_SERVER['HTTP_HOST']    目前請求頭中 Host: 項的内容,如果存在的話。
$_SERVER['HTTP_REFERER']    引導使用者代理到目前頁的前一頁的位址(如果存在)。由 user agent 設定決定。并不是所有的使用者代理都會設定該項,有的還提供了修改 HTTP_REFERER 的功能。簡言之,該值并不可信。)
$_SERVER['HTTPS']    如果腳本是通過 HTTPS 協定被通路,則被設為一個非空的值。
$_SERVER['REMOTE_ADDR']    浏覽目前頁面的使用者的 IP 位址。
$_SERVER['REMOTE_HOST']    浏覽目前頁面的使用者的主機名。DNS 反向解析不依賴于使用者的 REMOTE_ADDR。
$_SERVER['REMOTE_PORT']    使用者機器上連接配接到 Web 伺服器所使用的端口号。
$_SERVER['SCRIPT_FILENAME']    目前執行腳本的絕對路徑。
$_SERVER['SERVER_ADMIN']    該值指明了 Apache 伺服器配置檔案中的 SERVER_ADMIN 參數。如果腳本運作在一個虛拟主機上,則該值是那個虛拟主機的值。
$_SERVER['SERVER_PORT']    Web 伺服器使用的端口。預設值為 "80"。如果使用 SSL 安全連接配接,則這個值為使用者設定的 HTTP 端口。
$_SERVER['SERVER_SIGNATURE']    包含了伺服器版本和虛拟主機名的字元串。
$_SERVER['PATH_TRANSLATED']    目前腳本所在檔案系統(非文檔根目錄)的基本路徑。這是在伺服器進行虛拟到真實路徑的映像後的結果。
$_SERVER['SCRIPT_NAME']    包含目前腳本的路徑。這在頁面需要指向自己時非常有用。__FILE__ 常量包含目前腳本(例如包含檔案)的完整路徑和檔案名。
$_SERVER['SCRIPT_URI']    URI 用來指定要通路的頁面。例如 "/index.html"。
 

下面是某網友整理的結果,可參考下。

伺服器變量 $_SERVER 詳解:

1、$_SESSION['PHP_SELF'] -- 擷取目前正在執行腳本的檔案名

2、$_SERVER['SERVER_PROTOCOL'] -- 請求頁面時通信協定的名稱和版本。例如,“HTTP/1.0”。

3、$_SERVER['REQUEST_TIME'] -- 請求開始時的時間戳。從 PHP 5.1.0 起有效。和time函數效果一樣。

4、$_SERVER['argv'] -- 傳遞給該腳本的參數。我試了下,get方法可以得到$_SERVER['argv'][0];post方法無法給他指派。

5、$_SERVER['SERVER_NAME'] -- 傳回目前主機名。

6、$_SERVER['SERVER_SOFTWARE'] -- 伺服器辨別的字串,在響應請求時的頭資訊中給出。 如Microsoft-IIS/6.0

7、$_SERVER['REQUEST_METHOD'] -- 通路頁面時的請求方法。例如:“GET”、“HEAD”,“POST”,“PUT”。

8、$_SERVER['QUERY_STRING'] -- 查詢(query)的字元串(URL 中第一個問号 ? 之後的内容)。

9、$_SERVER['DOCUMENT_ROOT'] -- 目前運作腳本所在的文檔根目錄。在伺服器配置檔案中定義。 如E:\server

10、$_SERVER['HTTP_ACCEPT'] -- 目前請求的 Accept: 頭資訊的内容。

11、$_SERVER['HTTP_ACCEPT_CHARSET'] -- 目前請求的 Accept-Charset: 頭資訊的内容。例如:“iso-8859-1,*,utf-8”。

12、$_SERVER['HTTP_ACCEPT_ENCODING'] -- 目前請求的 Accept-Encoding: 頭資訊的内容。例如:“gzip”。

13、$_SERVER['HTTP_ACCEPT_LANGUAGE'] -- 目前請求的 Accept-Language: 頭資訊的内容。例如:“en”。

14、$_SERVER['HTTP_CONNECTION'] -- 目前請求的 Connection: 頭資訊的内容。例如:“Keep-Alive”。

15、$_SERVER['HTTP_HOST'] -- 目前請求的 Host: 頭資訊的内容。

16、$_SERVER['HTTP_REFERER'] -- 連結到目前頁面的前一頁面的 URL 位址。

17、$_SERVER['HTTP_USER_AGENT'] -- 傳回使用者使用的浏覽器資訊。也可以使用 get_browser() 得到此資訊。

18、$_SERVER['HTTPS'] -- 如果通過https通路,則被設為一個非空的值,否則傳回off.

19、$_SERVER['REMOTE_ADDR'] -- 正在浏覽目前頁面使用者的 IP 位址。

20、$_SERVER['REMOTE_HOST'] -- 正在浏覽目前頁面使用者的主機名。反向域名解析基于該使用者的 REMOTE_ADDR。如本地測試傳回127.0.0.1

21、$_SERVER['REMOTE_PORT'] -- 使用者連接配接到伺服器時所使用的端口。我在本機測試沒通過,不知道什麼原因。

22、$_SERVER['SCRIPT_FILENAME'] -- 目前執行腳本的絕對路徑名。如傳回E:\server\index.php

23、$_SERVER['SERVER_ADMIN'] -- 該值指明了 Apache 伺服器配置檔案中的 SERVER_ADMIN 參數。如果腳本運作在一個虛拟主機上,則該值是那個虛拟主機的值

24、$_SERVER['SERVER_PORT'] -- 伺服器所使用的端口。預設為“80”。如果使用 SSL 安全連接配接,則這個值為使用者設定的 HTTP 端口。

25、$_SERVER['SERVER_SIGNATURE'] -- 包含伺服器版本和虛拟主機名的字元串。

26、$_SERVER['PATH_TRANSLATED'] -- 目前腳本所在檔案系統(不是文檔根目錄)的基本路徑。這是在伺服器進行虛拟到真實路徑的映像後的結果。 Apache 2 用 戶可以使用 httpd.conf 中的 AcceptPathInfo On 來定義 PATH_INFO。

27、$_SERVER['SCRIPT_NAME'] -- 包含目前腳本的路徑。這在頁面需要指向自己時非常有用。__FILE__ 包含目前檔案的絕對路徑和檔案名(例如包含檔案)。

28、$_SERVER['REQUEST_URI'] -- 通路此頁面所需的 URI。例如,“/index.html”。

29、$_SERVER['PHP_AUTH_DIGEST'] -- 當作為 Apache 子產品運作時,進行 HTTP Digest 認證的過程中,此變量被設定成用戶端發送的“Authorization”HTTP 頭内容(以便作進一步的認證操作)。

30、$_SERVER['PHP_AUTH_USER']-- 當 PHP 運作在 Apache 或 IIS(PHP 5 是 ISAPI)子產品方式下,并且正在使用 HTTP 認證功能,這個變量便是使用者輸入的使用者名。

31、$_SERVER['PHP_AUTH_PW'] -- 當 PHP 運作在 Apache 或 IIS(PHP 5 是 ISAPI)子產品方式下,并且正在使用 HTTP 認證功能,這個變量便是使用者輸入的密碼。

32、$_SERVER['AUTH_TYPE']--當 PHP 運作在 Apache 子產品方式下,并且正在使用 HTTP 認證功能,這個變量便是認證的類型。           

一、$_SERVER['SERVER_NAME']  在windows系統下,末尾是有 / 的,linux下沒有/ 。 可用以下方法處理

 1、不論是那種系統直接全部加上 / 然後在進行替換 ,切記 ,應如此替換 str_replace('\\', '/', $fileUrl); 才可以。

 2、判斷是那種作業系統,使用PHP_OS,然後進行字元截取進行判斷

<?php

echo 'documentroot:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; //根目錄,在apache的配置檔案裡定義:httpd.conf 比如:DocumentRoot "D:/work/php_root"

echo 'httphost:'.$_SERVER['HTTP_HOST'].'<br>'; //域名,比如:localhost

echo 'phpself:'.$_SERVER['PHP_SELF'].'<br>';   // 從根目錄到檔案本身的路徑

echo 'script filename'.$_SERVER['SCRIPT_FILENAME'].'<br>'; //documentroot+phpself

echo 'request uri'.$_SERVER['REQUEST_URI'].'<br>'; //從根目錄開始所有的URL字元串,包括問号之後的字元

echo 'request method:'.$_SERVER['REQUEST_METHOD'].'<br>'; //請求的方法

echo 'name:'.$_REQUEST['name'].'<br>'; //請求參數的值

?>