1

嗨,我正在使用 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 tab中使用opera浏览器的用户显示为chrome浏览器用户时

谁能帮我纠正这个问题

PS - 我使用的是精简版的 browsecap.ini 文件

4

1 回答 1

1

您好心地向我提供了有问题的移动 Opera 浏览器的示例 UA 字符串:

Mozilla/5.0 (Linux; Android 4.1.2; GT-P3100 Build/JZO54K) AppleWebKit/537.36 (KHTML, like 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, like 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;
}
?>

参考:如何获得准确的浏览器名称和版本?

于 2015-04-24T10:46:42.403 回答