发现它的浏览器是IE使用HTTP_USER_AGENT

时间:2014-03-24 10:32:22

标签: php

我正在尝试编写一个小脚本来找出用户正在使用的浏览器类型。

我从某个地方找到了以下内容(我认为是这样):

   $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"
}

在Internet Explorer中,微软必须再次投入使用扳手。我该怎么做来检测IE? HTTP_USER_AGENT中没有MSIE或甚至任何Internet Explorer指示。我该如何检测它?

1 个答案:

答案 0 :(得分:1)

Trident是IE的渲染引擎 - 因此,每当显示部分字符串时,您可以假设您正在处理Internet Explorer(当然还有人试图伪造一个)。