在php中识别服务器端的浏览器

时间:2009-07-24 21:50:31

标签: php browser mobile

我有一个网站。当用户点击特定页面(比如identify.php)时,我想找到客户端正在使用的浏览器类型。浏览器可能是mozilla,IE,Opera,chrome或任何其他手机设备,如SonyEricssonK610i,SAMSUNG-SGH-E370,SonyEricssonT700或NokiaN73-1。

这可以检测用户浏览器吗?

10 个答案:

答案 0 :(得分:5)

您需要查看:

$_SERVER['HTTP_USER_AGENT']

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

一些例子:

我的Firefox自称​​ Mozilla / 5.0(Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11)Gecko / 2009060215 Firefox / 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; http://bsalsa.com) ; .NET CLR 1.1.4322; .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中的所有技巧,例如。声称是多个版本。

答案 1 :(得分:3)

尝试使用php函数get_browser();

http://us3.php.net/function.get-browser

或者您可以在该页面的评论中尝试其中一个较轻的脚本。

答案 2 :(得分:2)

您可以查看$_SERVER['HTTP_USER_AGENT']

http://php.net/manual/en/reserved.variables.server.php

答案 3 :(得分:2)

我们已经开始使用browsecap并认为这是一个更可靠的解决方案,试图通过自己解析HTTP_USER_AGENT字符串来准确确定浏览器类型。

编辑php.ini文件(或.htaccess文件)以包含:

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

...那么你在php中的函数调用是:

$browser = get_browser(null, true);

答案 4 :(得分: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");
}

答案 5 :(得分:1)

$ _ SERVER [ '' HTTP_USER_AGENT'];

答案 6 :(得分:1)

这个超全球变量:

$_SERVER['HTTP_USER_AGENT'];

是你需要的; - )

答案 7 :(得分:1)

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

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

答案 8 :(得分:1)

$_SERVER['HTTP_USER_AGENT']

此变量为您提供请求设备的用户代理字符串。从这里开始,你可以使用正则表达式来解决你不应该做的很多原因:

  1. 用户代理为easily spoofed因此不可靠
  2. 用户代理字符串不一致,不断变化(即不能面向未来)和not easily interpreted(尽管here是一个列表)
  3. 我建议使用Javascript进行功能检查,如jQuery does

答案 9 :(得分: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或其他渲染代理,因为这会影响页面的显示方式。