PHP网站手机适配跳转到相对应的页面

如果你有来自手机界面的访问者,你很可能需要将他们引导至一个不同的页面,一个特别为手机浏览器优化的界面。


1.在页面头部添加判断

通过PHP和浏览器头信息,我们可以轻松地实现将手机用户转向经过专门设计的WAP界面。我恰好使用了WP-T-WAP插件实现了界面的WAP化,WAP浏览的地址是http://mkaifa.com/wap。(你可以尝试浏览这个地址,它可以在电脑上被打开。真抱歉,我现在用的是MobilePress,没有演示了,MobilePress可以自动判断访问者的浏览器。)

我希望手机访客在打开http://mkaifa.com/地址时,自动导向http://mkaifa.com/wap。怎么办呢?


答案非常简单。

打开header.php文件。在第一行插入以下代码:

< ?php
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($agent,"comFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS"))
header("Location:http://mkaifa.com/wap");
?>

这段代码的含义是,当浏览器返回的UA信息为Opera Mini、UCWEB等内容时,将页面转向http://mkaifa.com/wap。

1.1 补充:增加手机浏览器的跳转提示

当你使用上面的方法设置跳转时,可能会遇到这种状况:手机访问者直接访问类似http://mkaifa.com/archive/xxx的子页面,而不是首页。这时,改判断语句仍然会执行命令,将手机访问者引导至手机界面的首页,使访客无法获取想要的信息。

怎么办呢?

你可以在这段语句之外再加入一个判断,只有在当前页面为首页时执行此命令。
在WordPress环境下这个判断的写法是
<?php if ( is_home() ) { ... }?>
那么全部的代码是:

<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
if ( is_home() && ((strpos($agent,"comFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS")) )
header("Location:http://mkaifa.com/wap");
}
?>

这样我们又遇到一个问题:手机访问者在浏览子页面时,并不知道你提供了WAP界面,而你恰恰又很希望推销的你的WAP界面。

我们可以修改这个判断语句,让它不再直接跳转,而是在特定浏览器下显示提示信息,告诉手机用户可以转换至WAP界面浏览。

代码写法如下:

<?php
$agent = $_SERVER['HTTP_USER_AGENT'];
if(strpos($agent,"comFront") || strpos($agent,"iPhone") || strpos($agent,"MIDP-2.0") || strpos($agent,"Opera Mini") || strpos($agent,"UCWEB") || strpos($agent,"Android") || strpos($agent,"Windows CE") || strpos($agent,"SymbianOS")) { ?>
<div id="mobile"><p>系统检测到您正在使用手机浏览器,您可以访问<a href="http://mkaifa.com/wap">移动界面</a>以获取更好的浏览体验。</p></div>
<?php } ?>

当然了,你可以综合这两种方法,让手机访客在访问首页时自动跳转,而访问其他界面时显示提示信息。

2.需要足够的手机浏览器UA信息

当浏览器访问页面时,它会向服务器提交一个标志字符,这段字符被称作UA(User Agent),他们看起来大概是这个样子:

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

是的,UA很长,甚至还包含了系统信息。但是当我们进行判断时,只需要核对最关键的字符。比如我需要判断当前用户是否使用了IE 8(我的确就是用的IE8),那么 在上面的判断语句中就应该写成strpos($agent,”MSIE 8.0″) 。

我准备了8种最常见的浏览器/平台分别是comFront、iPhone、JAVA(MIDP-2.0)、Opera Mini、UCWEB、Android、Windows CE/Mobile、SymbianOS。就目前的状况来说,这8种平台已经包含了国内几乎全部的手机访客,当然,完整的手机浏览客户端列表不止这么多,我罗列一些:

2.0 MMP, 240×320, 400X240, AvantGo, BlackBerry, Blazer, Cellphone, Danger, DoCoMo, Elaine/3.0 EudoraWeb,   Googlebot-Mobile, hiptop, IEMobile, KYOCERA/WX310K, LG/U990, MIDP-2., MMEF20, MOT-V, comFront, Newt, Nintendo Wii, Nitro, // Nintendo DS Nokia, Opera Mini, Palm, PlayStation Portable, portalmmm, Proxicom, Proxicom, SHARP-TQ-GX10, SHG-i900, Small, SonyEricsson, Symbian OS, SymbianOS, TS21i-10, UP.Browser, UP.Link, webOS, // Palm Pre, etc. Windows CE, WinWAP, YahooSeeker/M1A1-R2D2

你可以根据这个列表添加或替换上面的PHP判断语句。但是我仍然推荐我已经选好的8种平台,因为目前会使用手机浏览互联网——特别是个人博客的用户,基本上都是高端玩家。

另外你可以写一个简单的页面,用来判断你的手机UA

<?phpecho $_SERVER['HTTP_USER_AGENT']; ?>

保存为ua-test.php,上传至服务器,用你的手机访问这个页面。

你可能感兴趣的:(职场,WAP,休闲,PHP网站手机,适配跳转到相对应的页面)