如何在PHP中执行浏览器检测 - IE(版本)

时间:2014-02-18 16:12:38

标签: php internet-explorer

我发现这段代码通过php检测浏览器:

<?php
$msie = strpos($_SERVER["HTTP_USER_AGENT"], 'MSIE') ? true : false;
$firefox = strpos($_SERVER["HTTP_USER_AGENT"], 'Firefox') ? true : false;
$safari = strpos($_SERVER["HTTP_USER_AGENT"], 'Safari') ? true : false;
$chrome = strpos($_SERVER["HTTP_USER_AGENT"], 'Chrome') ? true : false;
?>

<?php
//Firefox
if ($firefox) {
echo 'you are using Firefox!';
echo '<br />';
}

// Safari or Chrome. Both use the same engine - webkit
if ($safari || $chrome) { 
echo 'you are using a webkit powered browser';
echo '<br />';
}

// IE
if ($msie) {
echo '<br>you are using Internet Explorer<br>';
echo '<br />';
}?>

Source

但是代码不包括可能的IE版本。 做了这样的事情:

// IE7
if ($msie7) {
echo '<br>you are using Internet Explorer 7<br>';
echo '<br />';
}

有人可以帮我吗?希望改进代码,包括支持IE版本。

3 个答案:

答案 0 :(得分:6)

试试这个:

<?php
    $ie6 = (ereg("MSIE 6", $_SERVER["HTTP_USER_AGENT"])) ? true : false;
    $ie7 = (ereg("MSIE 7", $_SERVER["HTTP_USER_AGENT"])) ? true : false;
    $ie8 = (ereg("MSIE 8", $_SERVER["HTTP_USER_AGENT"])) ? true : false;

    if ($ie6 || $ie7 || $ie8) {
        // Do fallback stuff that old browsers can do here
        echo "You are using IE";
    } else {
        // Do stuff that real browsers can handle here
    }
?>

答案 1 :(得分:1)

这个PHP函数非常有效。但我不知道如何让PHP区分不同版本的“MSIE”

    <?php 
    if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ){
        header( 'Location: http://www.domain.com' ) ;
    }
?>

非常感谢

答案 2 :(得分:-1)

没有可靠的方法让PHP知道,也不关心哪个浏览器正在调用它。根据设计,服务器端语言没有理由在执行代码之前考虑使用哪种浏览器。 $_SERVER['HTTP_USER_AGENT']充其量只是一个垫片而且频繁变化,以至于你必须尽快让它过时而不是迟早。

作为Web开发人员的唯一目标应该是编写CSS和JS代码,这些代码可以跨浏览器兼容,也可以使用条件<!--[if IE 8]><![endif]-->垫片,显然已被IE11删除了......

在JS中,您需要在调用之前检查函数是否存在,或者确定支持它的JS引擎是否在浏览器目标范围内可用。

话虽如此,是的,有些图书馆试图破译$_SERVER['HTTP_USER_AGENT'],但信息来源首先是有缺陷的,所以从您尝试使用它的那一刻起,图书馆就没用了。

这是一些跨浏​​览器的CSS:

.someClass{
    -webkit-box-shadow: 0 0 5px black;
    -moz-box-shadow:    0 0 5px black;
    box-shadow:         0 0 5px black;

    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);

    -webkit-border-radius: 4px;
    -moz-border-radius: 4px;
    border-radius: 4px;

    /* IE supports nothing above? Too bad, it will ignore it */
}