$_server['query_string'] a=3&t=4
$_server['path_info']/foot/bar.html
$_server['http_user_agent'] 獲取瀏覽器相關引數 mozilla/5.0 (windows nt 6.1; wow64) .....
引用最近在開發站群軟體,用到了根據訪問網域名稱判斷子站點的相關問題。php獲取當前網域名稱有兩個變數 http_host 和 server_name,我想知道兩者的區別以及哪個更加可靠。
下面說說本人經過親自驗證 + 查閱官方文件 + 官方bug列表 + 官方郵件列表 + sitepoint + webmasterworld + google的總結:
相同點:
當滿足以下三個條件時,兩者會輸出相同資訊。
1. 伺服器為80埠
2. apache的conf中servername設定正確
3. http/1.1協議規範
不同點:
1. 通常情況:
_server["http_host"] 在http/1.1協議規範下,會根據客戶端的http請求輸出資訊。
_server["server_name"] 預設情況下直接輸出apache的配置檔案httpd.conf中的servername值。
2. 當伺服器為非80埠時:
_server["http_host"] 會輸出埠號,例如:mimiz.cn:8080
_server["server_name"] 會直接輸出servername值
因此在這種情況下,可以理解為:http_host = server_name : server_port
3. 當配置檔案httpd.conf中的servername與http/1.0請求的網域名稱不一致時:
httpd.conf配置如下:
servername mimiz.cn
serveralias www.mimiz.cn
客戶端訪問網域名稱www.mimiz.cn
_server["http_host"] 輸出 www.mimiz.cn
_server["server_name"] 輸出 mimiz.cn
所以,在實際程式中,應盡量使用_server["http_host"] ,比較保險和可靠。
PHP 系統變數 SERVER
server 是乙個包含了諸如頭資訊 header 路徑 path 以及指令碼位置 script locations 等等資訊的陣列。這個陣列中的專案由 web 伺服器建立。不能保證每個伺服器都提供全部專案 伺服器可能會忽略一些,或者提供一些沒有在這裡列舉出來的專案。下表列出了所有 server 變...
php中的SERVER變數
server php self 當前正在執行指令碼的檔名,與 document root相關。server argv 傳遞給該指令碼的引數。server argc 包含傳遞給程式的命令列引數的個數 如果執行在命令列模式 server gateway inte ce 伺服器使用的 cgi 規範的版本。...
了解預定義變數 SERVER
這一節主要內容是了解預定義變數 server的用法。server 是乙個包含了諸如頭資訊 header 路徑 path 以及指令碼位置 script locations 等等資訊的陣列。http server vars 包含著相同的資訊,但它不是乙個超全域性變數。注意 http server var...