给 WP 主题加上浏览器判断

08.25.2009, WordPress, by , 131 views.

PHP 的 $_SERVER[“HTTP_USER_AGENT”];可以取得浏览器的 User Agent 字符串,User Agent 就是浏览器的标识字符串,也就是类似于名字的东东。给主题添加浏览器判断就要用到这个东东。

先看看每个浏览器的默认 User Agent 吧。

Windows 7, IE8 的 User Agent:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)

Windows 7, IE8 兼容模式的 User Agent:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)

Windows Vista, IE7 的 User Agent:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506)

Windows XP, IE6 的 User Agent:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Leopard, Firefox 的 User Agent:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; zh-CN; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2

Leopard, Safari 的 User Agent:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; zh-cn) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9

Leopard, Opera 的 User Agent:

Opera/9.80 (Macintosh; Intel Mac OS X; U; en) Presto/2.2.15 Version/10.00

这样一来就好做处理了,可是有时候装了一些软件后 IE 的 User Agent 会出错比如 IE Tester 。

这个是装了 IE Tester 后 IE8 的 User Agent:

Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ( EmbeddedWB http://bsalsa.com/); User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) (User-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; http://bsalsa.com) ( EmbeddedWB http://bsalsa.com/)); SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)

只要仔细看输出的这些字符都能发现 “MSIE” 这个字符串,而且在User Agent 出错的时候 “MSIE 6.0” 这个字符串会在 IE7 和IE8 的 User Agent 里面都有的。“MSIE 8.0” 的只针对 IE8 ,而 “MSIE 7.0” 在IE8的兼容模式里面也是有的。这个情况很少出现的。可以不用考虑。

我的处理方法是读取 User Agent 然后判断的依据 User Agent 先判断是否为 IE,然后判断是否为IE7,最后再判断是否为IE8。剩下来的就是IE6 和 IE6 以下的版本了。当然要是IE9 出来了那就加上个 IE9 的(现在的情况是每个IE版本的都有兼容的问题)。接下来代码就好写了。

PHP代码如下:
$Agent = $_SERVER["HTTP_USER_AGENT"]; //取得浏览器的 User Agent
if(strpos($Agent, "MSIE")){ //搜寻 IE 的标识字符
  if(strpos($Agent, "MSIE 7.0")){ //搜寻IE7 的标识字符
    include ('index_ie7.php'); //调用为 IE7 定制的页面
  } elseif (strpos($Agent, "MSIE 8.0")){ //搜寻IE8 的标识字符
      include ('index_ie8.php');      //调用为 IE8 定制的页面
    } else {
      include ('index_ie6.php'); //调用为 IE6 定制的页面
    }
  }
} else {
  include ( 'index_main.php'); //调用默认的页面
}

要是你将这段代码保存为 index.php 的话,再建里对应的调用文件。就可以做出针对IE 6、IE7、IE8的首页了。如果你只是想对 IE 做出区别的页面用这个就可以了。还可以继续判断其他浏览器和版本来单独定制。

接下来就可以个人按照自己的习惯来处理了。

最后来个特别的 User Agent:

SonyEricssonW800c/R1BC Browser/SEMC-Browser/4.2 Profile/MIDP-2.0 Configuration/CLDC-1.1

其实这个是索爱W800C手机的 User Agent,通过这个 User Agent 也可以获得手机的型号。这样也就可以给手机定制访问的页面了。

PS:我用的 IE6 和 IE7 是装在 VirtualBox 里面的。主题在做最后清理了。还有就是我这个代码显示用的是<code>标签,不是<blockquote>。

4 个评论

  1. keke 回复

    期待你的新主题!

  2. 枫非寒 回复

    老情人!七夕快乐!O(∩_∩)O~

  3. xu.hel 回复

    iStudio theme 即将发布!

  4. 求索阁 回复

    这个功能很不错的~

发表评论

电子邮件地址不会被公开。 必填项已用*标注