【问题标题】:PHP get_browser() returns strange valuesPHP get_browser() 返回奇怪的值
【发布时间】:2013-04-26 13:26:01
【问题描述】:

我想使用:

public function BrowserCheck() {
        static $Browser;
        if(!isset($Browser)){
            $Browser = get_browser($_SERVER['HTTP_USER_AGENT'],true);
        }
        return $Browser;
}

正如http://de3.php.net/manual/de/function.get-browser.php 所建议的那样,但不知何故 var_dump($Result);只会输出奇怪的值:

array(30) {
["browser_name_regex"]=>
string(6) "§^.*$§"
["browser_name_pattern"]=>
string(1) "*"
["browser"]=>
string(15) "Default Browser"
["version"]=>
string(1) "0"
["majorver"]=>
string(1) "0"
["minorver"]=>
string(1) "0"
["platform"]=>
string(7) "unknown"
["alpha"]=>
string(0) ""
["beta"]=>
string(0) ""
["win16"]=>
string(0) ""
["win32"]=>
string(0) ""
["win64"]=>
string(0) ""
["frames"]=>
string(1) "1"
["iframes"]=>
string(0) ""
["tables"]=>
string(1) "1"
["cookies"]=>
string(0) ""
["backgroundsounds"]=>
string(0) ""
["cdf"]=>
string(0) ""
["vbscript"]=>
string(0) ""
["javaapplets"]=>
string(0) ""
["javascript"]=>
string(0) ""
["activexcontrols"]=>
string(0) ""
["isbanned"]=>
string(0) ""
["ismobiledevice"]=>
string(0) ""
["issyndicationreader"]=>
string(0) ""
["crawler"]=>
string(0) ""
["cssversion"]=>
string(1) "0"
["supportscss"]=>
string(0) ""
["aol"]=>
string(0) ""
["aolversion"]=>
string(1) "0"
}

为什么?我正在使用 Chrome,它只给我一些“§^.*$§”作为找到的名称?这不可能是真的...这里有什么问题?

【问题讨论】:

  • 什么是$Result?上面的代码中没有提到
  • 你有没有看底部的browscap注释:de3.php.net/manual/de/…browscap ini设置需要源来识别浏览器;没有它就不能保证浏览器会被识别。另见相关问答:stackoverflow.com/questions/3003228/…
  • 另外,请注意get_browser() 依赖于格式良好的用户代理。尝试打印出来,看看您的服务器是否正确报告了它。
  • 在你的 php.ini 中启用 browscap

标签: php browser


【解决方案1】:

我遇到了类似的问题,如果您在 Windows 上使用 Xampp 或 Wamp 服务器,那么这就是解决方案。

  1. Browscap下载最新文件full_php_browser.ini(38 MB)。
  2. 然后把名字改成browscap.ini,放到C:\xampp\php\extras\里面。
  3. 打开 php.ini 并添加这个 -

    [browscap]
    ;http://php.net/browscap
    browscap = "C:\xampp\php\extras\browscap.ini"
    

而且肯定会奏效。

【讨论】:

    【解决方案2】:

    检查你的php.ini中是否启用了browscap,如果没有启用它并重新启动appache

     [browscap]
     ; http://php.net/browscap
     browscap = "C:\xampp\php\extras\browscap.ini"
    

    如果已经存在,请检查该位置是否存在“browscap.ini”,如果不存在

    browscap.ini

    下载,并添加到路径

    【讨论】:

      【解决方案3】:
      public function BrowserCheck() {
              static $Browser;
              if(!isset($Browser)){
                  //You can bypass $_SERVER['HTTP_USER_AGENT'] parameter with a NULL value. 
                  //you will get right result.  
                  $Browser = $browser = get_browser(null, true);
              }
              return $Browser;
      }
      
      Try this code.
      

      【讨论】:

        【解决方案4】:

        您忘记了:http://tempdownloads.browserscap.com/ -- PHP 下载版本!并从 php_browscap.ini 重命名为 browscap.ini

        【讨论】:

        • 我已经这样做了...即使是最新的 browscap.ini 也没有给我任何其他结果。
        【解决方案5】:
        public function BrowserCheck() {
                static $Browser;
                if(!isset($Browser)){
                    $Browser = $browser = get_browser(null, true);
                }
                return $Browser;
        }
        

        不要使用$_SERVER['HTTP_USER_AGENT']。 get_browser 函数默认返回浏览器信息。

        试试上面的代码。

        【讨论】:

          【解决方案6】:

          此函数使用来自 browscap.ini 文件的信息。这可能不是最好的解决方案,因为文件不可能一直是最新的。尝试仅获取用户代理并通过正则表达式确定名称。

          【讨论】:

            猜你喜欢
            • 2013-12-23
            • 2012-06-18
            • 2012-05-17
            • 2020-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-09
            相关资源
            最近更新 更多