确定服务器端代码中的浏览器类型(PHP)

时间:2012-12-07 12:05:35

标签: php internet-explorer http

  

可能重复:
  Determine Browser’s Version

我想确定服务器代码中的浏览器类型。

实际上,我花了太多时间来攻击 HTML / CSS ,以使网站在所有浏览器中保持一致。唯一不同(错误地)呈现网站的浏览器是IE,因此我想通知用户,以便他们理解为什么页面不像他们期望的那样。

为此,我只对检测来自IE的请求感兴趣,以便我可以通知IE用户该网站最好使用其他网络浏览器查看。

我认为浏览器类型是作为GET请求的一部分在其中一个HTTP标头中发送的。我想在我的逻辑中使用它。还有更好的方法吗?

代码段非常有用。类似的东西:

<?php
 $flag = $_GET(SOME_VARIABLE); // check if it is ANY IE version
?>

5 个答案:

答案 0 :(得分:3)

您可以查看$ _SERVER ['HTTP_USER_AGENT']:)

答案 1 :(得分:2)

PHP的get_browser功能对你来说应该是完美的 -

  

get_browser - 告诉用户浏览器的功能

     

返回值 - 信息在对象或数组中返回,该对象或数组将包含各种数据元素,例如,表示浏览器的主要和次要版本号以及ID字符串;帧,JavaScript和cookie等功能的TRUE / FALSE值;等等。

$browser = get_browser(null, true);

此函数可以返回包含有关用户浏览器的大量信息的数组

Array
(
    ...
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    ...
)  

答案 2 :(得分:1)

互联网上充满了浏览器检测功能

   function detect_ie(){
     if (isset($_SERVER['HTTP_USER_AGENT']) && 
         (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)){
           return true;
        }else{
           return false;
        }
    }

答案 3 :(得分:0)

如果你想更具体一点,你可以尝试。


function getBrowser()
    {
        $u_agent = $_SERVER['HTTP_USER_AGENT'];
        $bname = 'Unknown';
        $platform = 'Unknown';
        $version= "";
        if (preg_match('/linux/i', $u_agent))
        {
            $platform = 'linux';
        }
        elseif (preg_match('/macintosh|mac os x/i', $u_agent))
        {
            $platform = 'mac';
        }
        elseif (preg_match('/windows|win32/i', $u_agent))
        {
            $platform = 'windows';
        }

        if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
        {
            $bname = 'Internet Explorer';
            $ub = "MSIE";
        }
        elseif(preg_match('/Firefox/i',$u_agent))
        {
            $bname = 'Mozilla Firefox';
            $ub = "Firefox";
        }
        elseif(preg_match('/Chrome/i',$u_agent))
        {
            $bname = 'Google Chrome';
            $ub = "Chrome";
        }
        elseif(preg_match('/Safari/i',$u_agent))
        {
            $bname = 'Apple Safari';
            $ub = "Safari";
        }
        elseif(preg_match('/Opera/i',$u_agent))
        {
            $bname = 'Opera';
            $ub = "Opera";
        }
        elseif(preg_match('/Netscape/i',$u_agent))
        {
            $bname = 'Netscape';
            $ub = "Netscape";
        }

        $known = array('Version', $ub, 'other');
        $pattern = '#(?' . join('|', $known) .')[/ ]+(?[0-9.|a-zA-Z.]*)#';
        if (!preg_match_all($pattern, $u_agent, $matches))
        {

        }
        $i = count($matches['browser']);
        if ($i != 1)
        {
            if (strripos($u_agent,"Version")  $u_agent,
            'name'      => $bname,
            'version'   => $version,
            'platform'  => $platform,
            'pattern'    => $pattern
        );
    }

答案 4 :(得分:0)

这将执行trick,但您也应该使用JavaScript在客户端执行此操作。