2009-07-24 71 views
2

我有一个网站。当用户点击一个特定的页面(比如说identity.php)时,我想查找客户端正在使用的浏览器的类型。浏览器可能是mozilla,IE,opera,chrome或任何其他移动设备,如SonyEricssonK610i,SAMSUNG-SGH-E370,SonyEricssonT700或NokiaN73-1。在服务器端识别浏览器在php

这是可能检测到用户浏览器?

回答

5

你需要看看:

$_SERVER['HTTP_USER_AGENT'] 

,它包含了浏览器的用户代理字符串。请注意,出于兼容性原因,几乎所有浏览器声称是“Mozilla” - 您需要为该标头中的每个浏览器查找特定的文本,例如。 Internet Explorer的“MSIE”。

一些例子:

我的Firefox自称的Mozilla/5.0(窗口; U; Windows NT的5.1; EN-GB; RV:1.9.0.11)的Gecko/2009060215火狐/ 3.0.11(。 NET CLR 4.0.20506)

我的IE7自称的Mozilla/4.0(兼容; MSIE 7.0; Windows NT的5.1; GTB6;用户代理:Mozilla的/ 4.0(兼容; MSIE 6.0; Windows NT的5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 4.0。 20506)

请注意在IE浏览器的所有欺骗,例如。声称是多个版本。

+2

请注意,此信息是由客户端发送,并可以设置为任何(一个可以把“Hellon世界!”在里面,如果他想);因此,您可以**尝试**来检测用户代理,但是您的应用程序必须始终工作,而不取决于此信息! – 2009-07-24 22:12:11

1

$ _ SERVER ['HTTP_USER_AGENT'];

1

这超全局变量:

$_SERVER['HTTP_USER_AGENT']; 

是你需要什么;-)

1

PHP提供了一个名为get_browser的函数,该函数检查用户代理头并尝试猜测浏览器对白名单。 这是相当有限的,但它适用于最常见的浏览器。

如果它不适合您的应用程序,那么您可能需要创建一个自定义函数。

0

像其他人一样,使用HTTP_USER_AGENT字符串来检测浏览器。下面是它的将是什么样子的例子:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0. 

只是记录的值不同的浏览器,然后检查Chrome等关键字。很可能您会想要检查Webkit或其他呈现代理,因为这会影响页面的显示方式。

2

我们使用browsecap开始,并认为它是试图通过解析字符串HTTP_USER_AGENT自己准确的判断浏览器类型更可靠的解决方案。

编辑php.ini文件(或.htaccess文件),包括:

php_value browscap      '/path/to/my/browscap/browscap.ini' 

...在PHP那么你的函数调用:

$browser = get_browser(null, true); 
1
$_SERVER['HTTP_USER_AGENT'] 

这个变量为您提供请求设备的用户代理字符串。从这里,你可以使用正则表达式来的原因cheThe数,你不应该这样做很丰富:

  1. 用户代理是easily spoofed,因此不可靠
  2. 用户代理字符串是不一致的,不断变化的(即不包括未来-proof)和not easily interpreted(虽然here是它们的列表)

我建议做能力的JavaScript检查,为jQuery does

2

对于手机,使用WURFL

$myDevice = new wurfl_class($wurfl, $wurfl_agents); 
$myDevice->GetDeviceCapabilitiesFromAgent($_SERVER["HTTP_USER_AGENT"]); 
if ($myDevice->is_wireless_device) { 
    header("Content-Type: text/vnd.wap.wml"); 
}