代码之家  ›  专栏  ›  技术社区  ›  Moon

php quickie:检查浏览器类型

php
  •  1
  • Moon  · 技术社区  · 14 年前

    我需要代码来检查浏览器类型我想要的是这样的

    <?php
    //check browser type
    if( $browserTYPE = 'Firefox')
    {
         echo ('1');
    }
    else echo('2');
    

    F1!F1!

    4 回复  |  直到 11 年前
        1
  •  2
  •   drew    14 年前
    if(stristr($_SERVER['HTTP_USER_AGENT'],"Firefox") !== false){
        //Uses firefox
    }else{
        //Does nto use firefox
    }
    
        2
  •  3
  •   Treffynnon    14 年前
    $_SERVER['HTTP_USER_AGENT'];
    

    这个可以和 get_browser() http://php.net/get_browser

    在你的情况下,我建议:

    <?php
    $browser = get_browser(null, true);
    $browserTYPE = $browser['browser'];
    
        3
  •  3
  •   Spudley Pat    14 年前

    首先,你为什么要这样做?火狐(在您的示例中)与Chrome、Opera、Safari、IE等的工作方式有什么不同,您需要专门检查它?那么不同版本的浏览器呢(火狐2仍然是火狐,但与当前版本非常不同)?

    不管怎样,如果您确实需要这样做,那么正如其他人所说,正式的确定方法是查看用户代理字符串:

    if(strpos($_SERVER[‘HTTP_USER_AGENT’],'Firefox') {
        //user runs firefox
    } else {
        //user runs something else.
    }
    

    PHP还提供 function called get_browser() 这使得事情变得简单了一点(您不必知道用户代理字符串的格式,尽管在内部它使用的是与上面相同的用户代理字符串,并且正如文档页面所说,您确实需要 browsecap.ini 文件-阅读文档页面了解更多信息)。

    $browser = get_browser(null, true);
    if($browser == 'Firefox') {    
        //user runs firefox
    }
    

    但是,请记住,最终用户可以在其浏览器配置中更改用户代理字符串。它被广泛使用,尤其是在站点试图阻塞特定浏览器的情况下。

    因此,无论您从用户代理字符串中得到什么信息,您永远无法确定它是否准确。它可能是火狐假装为IE或Chrome,假装为火狐或任何其他组合。

    它们甚至可以完全阻止用户代理字符串(我知道至少有一个Web安全产品在默认情况下可以这样做,而用户甚至不知道)。

    还有比你想象的更多的浏览器。除了少数几个著名的引擎外,大多数其他引擎都使用来自主要引擎的渲染引擎。例如,Flock和Icewasel使用火狐引擎,因此它们的页面工作方式与火狐完全相同,但在用户代理字符串中它们可能不会显示为火狐。还有许多浏览器以类似的方式使用IE渲染引擎。

    因此,简短的答案是读取用户代理字符串,但较长的答案并不依赖于它的准确性。

        4
  •  0
  •   Haim Evgi    14 年前

    使用

    $_SERVER[‘HTTP_USER_AGENT’]
    

    喜欢

    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'Firefox')
    

    你可以看到例子 here

    推荐文章