在Samsung galaxy选项卡中使用Opera浏览器时,get_browser()返回Chrome

时间:2015-04-24 04:12:09

标签: php browscap

您好我正在使用browsecap.ini

跟踪访问我网站的用户的浏览器

以下是我使用的代码

if(isset($message['HTTP_USER_AGENT'])){
    $get_browser = get_browser($message['HTTP_USER_AGENT'], true);
       if (!empty($get_browser)){
           $str_values.='".mysql_real_escape_string($get_browser['comment'])."'

但是,在galaxy选项卡中使用opera浏览器的用户显示为chrome浏览器用户

任何人都可以帮我纠正这个问题

P.S - 我正在使用lite文件版本的browsecap.ini文件

1 个答案:

答案 0 :(得分:1)

您向我提供了违规移动Opera浏览器的示例UA字符串:

  

Mozilla / 5.0(Linux;Android4.1.2; GT-P3100 Build / JZO54K)AppleWebKit / 537.36(KHTML,与Gecko一样)Chrome / 41.0.2272.81 Safari / 537.36 OPR / 28.0.1764.90386

get_browser()在该UA上返回的正则表达式是:

  

$ ^ mozilla / 5.0(。* linux。 android.4.1。)applewebkit /.*(khtml,和gecko一样)。* chrome / 41 .. safari /。 $

根本没有检测到Opera浏览器。但是,我发现这个函数也可以运行以获取浏览器名称。第一次检查是针对UA字符串的“ OPR / ”片段。

使用上面提供的测试UA运行时,输出为“Opera”。

<?php
function ExactBrowserName() {
    $ExactBrowserNameUA=$_SERVER['HTTP_USER_AGENT'];

    If (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")) {
        // OPERA
        $ExactBrowserNameBR="Opera";
    } ElseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "chrome/")) {
        // CHROME
        $ExactBrowserNameBR="Chrome";
    } ElseIf (strpos(strtolower($ExactBrowserNameUA), "msie")) {
        // INTERNET EXPLORER
        $ExactBrowserNameBR="Internet Explorer";
    } ElseIf (strpos(strtolower($ExactBrowserNameUA), "firefox/")) {
        // FIREFOX
        $ExactBrowserNameBR="Firefox";
    } ElseIf (strpos(strtolower($ExactBrowserNameUA), "safari/") and strpos(strtolower($ExactBrowserNameUA), "opr/")==false and strpos(strtolower($ExactBrowserNameUA), "chrome/")==false) {
        // SAFARI
        $ExactBrowserNameBR="Safari";
    } Else {
        // OUT OF DATA
        $ExactBrowserNameBR="OUT OF DATA";
    };

    return $ExactBrowserNameBR;
}
?>

参考:How to get exact browser name and version?