手机访问自动跳转到手机版

作者:system 发布于:2013-4-11 0:37

思路是,访问首页时,进行一个判断,如是手机访问的,则跳到相应的手机版

 

1.利用百度的JS来判断手机端,把下面这句代码复制到首页的 <head></head>之间


1 <script src="http://siteapp.baidu.com/static/webappservice/uaredirect.js"type="text/javascript"></script><script type="text/javascript">uaredirect("<?php echo BLOG_URL; ?>m");</script>
也可以自己把JS文件放在自己空间,并修改一下JS路径即可,下面是JS文件的代码 文件名uaredirect.js
1 function uaredirect(f){try{if(document.getElementById("bdmark")!=null){return}varb=false;if(arguments[1]){var e=window.location.host;vara=window.location.href;if(isSubdomain(arguments[1],e)==1){f=f+"/#m/"+a;b=true}else{if(isSubdomain(arguments[1],e)==2){f=f+"/#m/"+a;b=true}else{f=a;b=false}}}else{b=true}if(b){varc=window.location.hash;if(!c.match("fromapp")){if((navigator.userAgent.match(/(iPhone|iPod|Android|ios|iPad)/i))){location.replace(f)}}}}catch(d){}}function isSubdomain(c,d){this.getdomain=function(f){var e=f.indexOf("://");if(e>0){var h=f.substr(e+3)}else{var h=f}varg=/^www\./;if(g.test(h)){h=h.substr(4)}return h};if(c==d){return 1}else{varc=this.getdomain(c);var b=this.getdomain(d);if(c==b){return1}else{c=c.replace(".","\\.");var a=new RegExp("\\."+c+"$");if(b.match(a)){return2}else{return 0}}}};

2.把这个代码粘贴在index.php文件里即可

1 $agent = $_SERVER['HTTP_USER_AGENT'];
2 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"))
3 header("Location:blog.4a8a.com/m");

 

3.使用PHP来判断,这个兼容性更好,以下例子适用于emlog

首先找到include/lib/function.base.php加入如下函数:

01 /**
02 *判断是否是通过手机访问
03 */
04 function isMobile() {
05  // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
06  if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) {
07   return true;
08  }
09  //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
10  if (isset ($_SERVER['HTTP_VIA'])) {
11   //找不到为flase,否则为true
12   return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
13  }
14  //判断手机发送的客户端标志,兼容性有待提高
15  if (isset ($_SERVER['HTTP_USER_AGENT'])) {
16   $clientkeywords = array (
17    'nokia',
18    'sony',
19    'ericsson',
20    'mot',
21    'samsung',
22    'htc',
23    'sgh',
24    'lg',
25    'sharp',
26    'sie-',
27    'philips',
28    'panasonic',
29    'alcatel',
30    'lenovo',
31    'iphone',
32    'ipod',
33    'blackberry',
34    'meizu',
35    'android',
36    'netfront',
37    'symbian',
38    'ucweb',
39    'windowsce',
40    'palm',
41    'operamini',
42    'operamobi',
43    'openwave',
44    'nexusone',
45    'cldc',
46    'midp',
47    'wap',
48    'mobile'
49   );
50   // 从HTTP_USER_AGENT中查找手机浏览器的关键字
51   if (preg_match("/(" . implode('|', $clientkeywords) . ")/i",strtolower($_SERVER['HTTP_USER_AGENT']))) {
52    return true;
53   }
54  }
55  //协议法,因为有可能不准确,放到最后判断
56  if (isset ($_SERVER['HTTP_ACCEPT'])) {
57   // 如果只支持wml并且不支持html那一定是移动设备
58   // 如果支持wml和html但是wml在html之前则是移动设备
59   if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'],'text/html')))) {
60    return true;
61   }
62  }
63  return false;
64 }

第二步,打开index.php在
1 require_once 'init.php';

后面加上:


1 $ismoile = isMobile();
2 if($ismoile || strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')!==false){
3 emDirect('/m');
4 }

如此大功告成。你可以用手机访问你的博客看看。上面的strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 6.0')!==false判断你可以不要,因为这是我自己让ie6访问本站的时候也跳转到手机版而加的。

标签: emlog 手机版

Powered by emlog