【发布时间】:2009-07-24 21:50:31
【问题描述】:
我有一个网站。当用户单击特定页面(例如 identify.php)时,我想查找客户端正在使用的浏览器类型。浏览器可能是 mozilla、IE、opera、chrome 或任何其他移动设备,例如 SonyEricssonK610i、SAMSUNG-SGH-E370、SonyEricssonT700 或 NokiaN73-1。
这样可以检测到用户浏览器吗?
【问题讨论】:
我有一个网站。当用户单击特定页面(例如 identify.php)时,我想查找客户端正在使用的浏览器类型。浏览器可能是 mozilla、IE、opera、chrome 或任何其他移动设备,例如 SonyEricssonK610i、SAMSUNG-SGH-E370、SonyEricssonT700 或 NokiaN73-1。
这样可以检测到用户浏览器吗?
【问题讨论】:
你需要看看:
$_SERVER['HTTP_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) em>
我的 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) em>
请注意 IE 中的所有技巧,例如。声称是多个版本。
【讨论】:
【讨论】:
你可以看看$_SERVER['HTTP_USER_AGENT']
【讨论】:
我们已经开始使用browsecap,并相信这是一个更可靠的解决方案,它试图通过自己解析 HTTP_USER_AGENT 字符串来准确确定浏览器类型。
编辑 php.ini 文件(或 .htaccess 文件)以包含:
php_value browscap '/path/to/my/browscap/browscap.ini'
... 那么你在 php 中的函数调用是:
$browser = get_browser(null, true);
【讨论】:
对于手机,请使用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");
}
【讨论】:
$_SERVER[''HTTP_USER_AGENT'];
【讨论】:
这个超全局变量:
$_SERVER['HTTP_USER_AGENT'];
是你需要的 ;-)
【讨论】:
PHP 提供了一个名为get_browser 的函数,它检查用户代理标头并尝试根据白名单猜测浏览器。 它非常有限,但它适用于最常见的浏览器。
如果它不适合您的应用程序,那么您可能需要创建一个自定义函数。
【讨论】:
$_SERVER['HTTP_USER_AGENT']
此变量为您提供请求设备的用户代理字符串。从这里,您可以使用正则表达式来检查您不应该这样做的原因有很多:
我建议使用 Javascript 进行能力检查,如 jQuery does。
【讨论】:
就像其他人提到的那样,使用 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 或其他渲染代理,因为这会影响页面的显示方式。
【讨论】: