重定向旧浏览器

时间:2013-04-28 11:32:18

标签: php redirect browser

是否可以使用PHP get_browser()方法在特定版本下重定向浏览器?

示例:

重定向Internet Explorer 9,Safari 6,Chrome 26.0.1410.64,Opera 12和Firefox 20下的所有浏览器。

这样做的目的是当访问者访问我的网站时,我可以将它们重定向到降级版本(不使用HTML5或CSS3),或者我可以通知他们有更新可用(意思是我必须在新版本时更新我的​​代码。)

此外,我宁愿将它们重定向到我网站的降级版本,但获取版本号的任何帮助都会很棒。

由于

我发现这行代码正在进行Google搜索,但我对PHP很新,我真的不知道从哪里开始将这种类型的脚本放在一起。 :(

$using_ie6 = (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE 6.') !== FALSE);

2 个答案:

答案 0 :(得分:0)

如果您不想使用旧版浏览器访问您的网站,则应在用户访问您的网站之前创建索引文件。

像这样的结构:

- root
-- index.php
-- yourWebsiteFolder
--- website files ...
在index.php中

,您可以使用以下代码检查用户浏览器:

$browsers = "mozilla msie gecko firefox ";
$browsers.= "konqueror safari netscape navigator ";
$browsers.= "opera mosaic lynx amaya omniweb maxthon theworld traveler chrome";
$browsers = explode(" ", $browsers);
$nua = strToLower( $_SERVER['HTTP_USER_AGENT']);
$l = strlen($nua);
for ($i=0; $i<count($browsers); $i++){
      $browser = $browsers[$i];
      $n = stristr($nua, $browser);
      if(strlen($n)>0){
            $GLOBALS["ver"] = "";
            $GLOBALS["nav"] = $browser;
            $j=strpos($nua, $GLOBALS["nav"])+$n+strlen($GLOBALS["nav"])+1;
            for (; $j<=$l; $j++){
                  $s = substr ($nua, $j, 1);
                  if(is_numeric($GLOBALS["ver"].$s) )
                      $GLOBALS["ver"] .= $s;
                  else
                      break;
            }
      }
}

if( ($GLOBALS["nav"] == "firefox" && $GLOBALS["ver"] <= 15) || ( $GLOBALS["nav"] == "msie" && $GLOBALS["ver"] <= 8 ) ) {
    // browser is older
}
else
{
    // go to website
    header("location: yourWebsiteFolder");
}

在此代码中,如果用户的浏览器是firefox 15或更低版本,或者是IE 8或更低版本,则可以打印错误消息,否则用户可以访问您的网站。

答案 1 :(得分:-2)

这可能不是您正在寻找的答案,但是:

不要这样做!

  • 服务器端的浏览器检测永远不可靠。
  • 如果搜索引擎发现您向访问者提供了不同的内容,您迟早会受到惩罚。

相反:(大部分内容已在评论中提及)

  • 检测您使用的功能,而不是浏览器。在客户端做。
  • 检查您需要的功能是否可以使用您注入的某些JavaScript完成,以防该功能不可用。
  • 如果某个功能不可用且无法模拟显示​​一条小消息,或者对于大多数CSS3问题,请以某种方式忽略它们。 (例如:如果浏览器不支持CSS3过渡,在大多数用例中这都没问题。较旧的浏览器不显示动画,但显示的最终结果将是相同的。)

概括:HTML5并不是一些超酷的新标记。它主要是一些新标签,它们的默认行为可以在旧版浏览器中显示。 大多数新的CSS3东西是一些非常有用的eyecandy,但仅此而已。示例:没有CSS3渐变 - 没有问题。对于不支持此功能的浏览器,请使用纯色或“旧学校”图像。

同样,正如评论modenizr所述,这是一个很好的起点。