【问题标题】:Identifying the browser at server side in php在php中识别服务器端的浏览器
【发布时间】:2009-07-24 21:50:31
【问题描述】:

我有一个网站。当用户单击特定页面(例如 identify.php)时,我想查找客户端正在使用的浏览器类型。浏览器可能是 mozilla、IE、opera、chrome 或任何其他移动设备,例如 SonyEricssonK610i、SAMSUNG-SGH-E370、SonyEricssonT700 或 NokiaN73-1。

这样可以检测到用户浏览器吗?

【问题讨论】:

    标签: php browser mobile


    【解决方案1】:

    你需要看看:

    $_SERVER['HTTP_USER_AGENT']
    

    这将包含浏览器的用户代理字符串。请注意,出于兼容性原因,几乎所有浏览器都声称是“Mozilla” - 您需要在该标题中为每个浏览器查找特定文本,例如。 Internet Explorer 的“MSIE”。

    一些例子:

    我的 Firefox 自称 Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 4.0.20506) em>

    我的 IE7 自称 Mozilla/4.0(兼容;MSIE 7.0;Windows NT 5.1;GTB6;用户代理:Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1;SV1;http://bsalsa.com);。 NET CLR 1.1.4322;.NET CLR 2.0.50727;.NET CLR 3.0.04506.648;.NET CLR 3.5.21022;.NET CLR 3.0.4506.2152;.NET CLR 3.5.30729;.NET CLR 4.0.20506) em>

    请注意 IE 中的所有技巧,例如。声称是多个版本。

    【讨论】:

    • 请注意,此信息是客户端发送的,可以设置为任何内容(如果需要,可以将“Hellon World!”放入其中);因此,您可以尝试检测用户代理,但您的应用程序必须始终工作,而不是依赖于这些信息!
    【解决方案2】:

    试试php函数get_browser();

    http://us3.php.net/function.get-browser

    或者您可以尝试该页面的 cmets 中的许多轻量级脚本之一。

    【讨论】:

      【解决方案3】:

      你可以看看$_SERVER['HTTP_USER_AGENT']

      http://php.net/manual/en/reserved.variables.server.php

      【讨论】:

        【解决方案4】:

        我们已经开始使用browsecap,并相信这是一个更可靠的解决方案,它试图通过自己解析 HTTP_USER_AGENT 字符串来准确确定浏览器类型。

        编辑 php.ini 文件(或 .htaccess 文件)以包含:

        php_value browscap                        '/path/to/my/browscap/browscap.ini'  
        

        ... 那么你在 php 中的函数调用是:

        $browser = get_browser(null, true);
        

        【讨论】:

          【解决方案5】:

          对于手机,请使用WURFL

          $myDevice = new wurfl_class($wurfl, $wurfl_agents);
          $myDevice->GetDeviceCapabilitiesFromAgent($_SERVER["HTTP_USER_AGENT"]);
          if ( $myDevice->is_wireless_device ) {
            header("Content-Type: text/vnd.wap.wml");
          }
          

          【讨论】:

            【解决方案6】:

            $_SERVER[''HTTP_USER_AGENT'];

            【讨论】:

              【解决方案7】:

              这个超全局变量:

              $_SERVER['HTTP_USER_AGENT'];
              

              是你需要的 ;-)

              【讨论】:

                【解决方案8】:

                PHP 提供了一个名为get_browser 的函数,它检查用户代理标头并尝试根据白名单猜测浏览器。 它非常有限,但它适用于最常见的浏览器。

                如果它不适合您的应用程序,那么您可能需要创建一个自定义函数。

                【讨论】:

                  【解决方案9】:
                  $_SERVER['HTTP_USER_AGENT']
                  

                  此变量为您提供请求设备的用户代理字符串。从这里,您可以使用正则表达式来检查您不应该这样做的原因有很多:

                  1. 用户代理是easily spoofed,因此不可靠
                  2. 用户代理字符串不一致,不断变化(即不是面向未来)和not easily interpreted(尽管here 是它们的列表)

                  我建议使用 Javascript 进行能力检查,如 jQuery does

                  【讨论】:

                    【解决方案10】:

                    就像其他人提到的那样,使用 HTTP_USER_AGENT 字符串来检测浏览器。以下是它的外观示例:

                    Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.1 Safari/532.0.
                    

                    只需记录各种浏览器的值,然后检查诸如 Chrome 之类的关键字。您很可能需要检查 Webkit 或其他渲染代理,因为这会影响页面的显示方式。

                    【讨论】:

                      猜你喜欢
                      • 2018-01-19
                      • 1970-01-01
                      • 2019-05-10
                      • 2012-09-30
                      • 2010-11-22
                      • 2015-02-28
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多