2010-11-21 75 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