-1

可能重复:
确定浏览器的版本

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

事实上,我花了太多时间来破解HTML/CSS来让网站在所有浏览器中一致地显示。网站呈现不同(不正确)的唯一浏览器是 IE,所以我想通知用户,以便他们了解为什么页面不符合他们的预期。

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

我相信浏览器类型是作为 GET 请求的一部分在 HTTP 标头之一中发送的。我正在考虑在我的逻辑中使用它。有没有更好的办法?

代码片段将非常有用。类似于:

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

5 回答 5

3

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

于 2012-12-07T12:06:44.393 回答
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
    ...
)  
于 2012-12-07T12:09:03.503 回答
1

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

   function detect_ie(){
     if (isset($_SERVER['HTTP_USER_AGENT']) && 
         (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)){
           return true;
        }else{
           return false;
        }
    }
于 2012-12-07T12:08:14.643 回答
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
        );
    }

于 2012-12-07T12:38:54.040 回答
0

这可以解决问题但您也应该使用 JavaScript 在客户端进行。

于 2012-12-07T12:48:01.453 回答