【问题标题】:Detecting IE browser version using PHP使用PHP检测IE浏览器版本
【发布时间】:2011-03-14 07:36:02
【问题描述】:

我正在使用 $_SERVER['HTTP_USER_AGENT'] 来检测用户的浏览器。 当我在 IE8 上的本地主机上运行 var_dump 时,它返回: ...兼容的; MSIE 8.0; ... 但是当我将它上传到我的主机(godaddy)时,我得到: ...兼容的; MSIE 7.0; ...

有什么问题?

【问题讨论】:

    标签: php internet-explorer-8 internet-explorer-7 browser


    【解决方案1】:

    试试get_browser(),看看会发生什么。

    来自链接:

    <?php
    echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";
    
    $browser = get_browser(null, true);
    print_r($browser);
    ?>
    

    输出:

    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3
    
    Array
    (
        [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
        [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
        [parent] => Firefox 0.9
        [platform] => WinXP
        [browser] => Firefox
    // ...
    

    【讨论】:

      【解决方案2】:
      preg_match('/MSIE (.*?);/', $_SERVER['HTTP_USER_AGENT'], $matches);
      echo $version = $matches[1];
      

      【讨论】:

      • 您可能想详细说明您的代码块在做什么,否则您的回答毫无价值。
      【解决方案3】:

      我正在使用 $_SERVER['HTTP_USER_AGENT'] 来检测用户的浏览器

      是的,这就是问题所在。不要那样做。

      User-Agent string-hacking 是一场失败的游戏。有许多奇怪的情况可能会使您的脚本感到困惑。

      这是其中之一:IE8,默认为兼容模式时,伪装成IE7。您可以通过字符串中存在Trident/... 来检测这种情况,但是当然,就像所有字符串黑客“解决方案”一样,如果该字符串由于其他原因碰巧存在,这将会出错,可能会给出任何应用程序可以将任意字符串粘贴到 IE 的 User-Agent 标头的末尾,事实上,考虑到浏览器经常谎报自己是谁,中介可能会更改或删除标头。

      另外,通过在服务器端进行浏览器嗅探,您的 HTTP 响应取决于查看它们的浏览器,这意味着代理缓存将向错误的浏览器提供错误的页面,除非您包含正确的 Vary标题。但是如果你这样做,你会破坏 IE 中的缓存。

      服务器端 UA 嗅探是一种可怕的事情,只有在确实无法使用任何其他技术时才应将其用作最后的手段。对于向特定版本的 IE 显示不同内容的常见情况,您最好使用条件 cmets。

      【讨论】:

        【解决方案4】:

        检查字符串中的单词TRIDENT。兼容性问题即在兼容模式下。如果您想知道它的含义,请谷歌它。但是,三叉戟一词只有ie8+。

        编辑: 此外,您可以设置标题/元标记以强制 ie8 模式(不兼容)。但是,这可能不会在第二次请求之前生效。谷歌也一样。

        【讨论】:

        • if preg_match('/Trident\/4\.0;/i', $_SERVER['HTTP_USER_AGENT']) > 0 比 IE8 :)
        • 哈哈。我的 php 生锈了,但在 asp 中遇到了同样的问题:-P
        • @rubo77 见 vovafeldman 的评论。结合检查 IE
        猜你喜欢
        • 2014-12-28
        • 2014-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 2016-03-21
        • 1970-01-01
        • 2011-03-10
        相关资源
        最近更新 更多