我试着写一个小脚本来找出用户使用的是什么类型的浏览器
我从某处发现了以下内容(我认为是这样):
$browser = array(
'version' => '0.0.0',
'majorver' => 0,
'minorver' => 0,
'build' => 0,
'name' => 'unknown',
'useragent' => ''
);
$browsers = array(
'firefox', 'msie', 'opera', 'chrome', 'safari', 'mozilla', 'seamonkey', 'konqueror', 'netscape',
'gecko', 'navigator', 'mosaic', 'lynx', 'amaya', 'omniweb', 'avant', 'camino', 'flock', 'aol'
);
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$browser['useragent'] = $_SERVER['HTTP_USER_AGENT'];
$user_agent = strtolower($browser['useragent']);
foreach($browsers as $_browser) {
if (preg_match("/($_browser)['/ ]?([0-9.]*)/", $user_agent, $match)) {
$browser['name'] = $match[1];
$browser['version'] = $match[2];
@list($browser['majorver'], $browser['minorver'], $browser['build']) = explode('.', $browser['version']);
break;
}
}
}
var_dump($browser);
在我尝试过的所有小代码片段中,这一个工作得最好。它能正确识别出Chrome和Firefox。然而,它不能正确识别IE,(我使用IE11),因为IE不传递任何信息给浏览器。以上代码在IE11上的输出如下所示:
array(6) {
["version"]=>
string(3) "5.0"
["majorver"]=>
string(1) "5"
["minorver"]=>
string(1) "0"
["build"]=>
NULL
["name"]=>
string(7) "mozilla"
["useragent"]=>
string(68) "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
}
当谈到ie浏览器时,微软又要给它捣乱了。如何检测IE?在HTTP_USER_AGENT中没有MSIE,甚至没有任何Internet Explorer的指示。我怎样才能发现它?
Trident
是IE的渲染引擎-所以无论何时该部分字符串出现,您都可以假设您正在处理Internet Explorer(或者有人试图假冒)。