2010-11-21 81 views
2

對不起,如果這個問題對你們中的一些人來說似乎有點基礎,但是我的編程知識還有很多不足之處,至少可以說!如何使用PHP檢測用戶代理支持的HTTP版本?

我想知道的是:當向我的Web服務器發出請求時,如何檢測請求的用戶代理支持的HTTP(即HTTP/1.0或HTTP/1.1)的版本, ?我的服務器使用的服務器端腳本語言是PHP 5.2版。

基本上,我想用PHP做這樣的事情:

if(/* user agent is currently using HTTP/1.1 */) { 
// do this... 
} 
else { 
// do something else... 
} 

我會很感激,如果有人能在正確的方向指向我。提前致謝!

回答

5

超全球$_SERVER變量一般包含這種信息。在這種情況下,您對SERVER_PROTOCOL條目感興趣:

if($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1'){ 
    // Client is using HTTP/1.1 
} else { 
    // Client is using a different protocol (likely HTTP/1.0) 
} 
+0

非常感謝,你! – 2010-11-21 19:10:23

+0

@ clarky_y2k:沒問題。您應該標記其中一個答案也已被接受。 – You 2010-11-21 19:25:32

+0

$ _SERVER ['SERVER_PROTOCOL']有問題...請參閱http://stackoverflow.com/q/17640877/632951 – Pacerier 2013-07-14 15:48:14

2

您可以使用$_SERVER['SERVER_PROTOCOL']

'SERVER_PROTOCOL'
名稱,並通過其請求頁面時通信協議的修訂;即'HTTP/1.0';

+0

首先,感謝您的快速響應,Gumbo。 我確實考慮過$ _SERVER_PROTOCOL,但出於某種原因,我認爲它返回的值是我的服務器*使用的值。那麼,我現在是否認爲$ _SERVER_PROTOCOL的值對應於*請求用戶代理*? – 2010-11-21 19:07:46

+0

@ clarky_y2k:是的,* SERVER \ _PROTOCOL *是客戶端在當前請求中使用的協議。只需嘗試一個HTTP/1.0請求並查看其差異。 – Gumbo 2010-11-21 19:11:57

+0

乾杯,夥計!感謝您的幫助,非常感謝。 – 2010-11-21 19:14:40

2

$_SERVER['SERVER_PROTOCOL']將具有請求頁面的HTTP版本。 link

+0

非常感謝,Reese! – 2010-11-21 19:11:40