最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > 建站教程 > php教程 >

php 判断访问者是否手机客户端实例

时间:2014-07-02 23:20来源:未知 作者:最模板zuimoban 点击:
最近移动互联网火爆了我们需要做一个PC站与WAP站,要实现如果用户是电脑访问WAP站就自动进入PC站,反之一样,下面我整理了一些代码与大家一起来看看. 方法一,判断HTTP_USER_AGENT,代码如下

最近移动互联网火爆了我们需要做一个PC站与WAP站,要实现如果用户是电脑访问WAP站就自动进入PC站,反之一样,下面我整理了一些代码与大家一起来看看.

方法一,判断HTTP_USER_AGENT,代码如下:

  1. $agent = strtolower($_SERVER['HTTP_USER_AGENT']);   
  2. if(strpos($agent,"netfront") || 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("HTTP/1.1 301 Moved Permanently");  
  4.     header("Location:####");  die;  

方法二,判断HTTP_ACCEPT,代码如下:

  1. if (isset($_SERVER['HTTP_ACCEPT']) && (strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml')!==FALSE) &&(strpos($_SERVER['HTTP_ACCEPT'],'text/html')===FALSE || (strpos($_SERVER['HTTP_ACCEPT'],'vnd.wap.wml') <   
  2. strpos($_SERVER['HTTP_ACCEPT'],'text/html')) )) {//手机访问   
  3.     Header("HTTP/1.1 301 Moved Permanently");  
  4.     header("Location:####"); die;  

以上两个方法都有局限性,下面将此两种方法整合起来判断,代码如下:

  1. function isMobile() {  
  2.     if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) {  
  3.         return true;  
  4.     }  
  5.     if(isset ($_SERVER['HTTP_VIA'])) {  
  6.         //找不到为flase,否则为true  
  7.         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;  
  8.     }  
  9.     if(isset($_SERVER['HTTP_USER_AGENT'])) {  
  10.         //此数组有待完善  
  11.         $clientkeywords = array (  
  12.         'nokia',  
  13.         'sony',  
  14.         'ericsson',  
  15.         'mot',  
  16.         'samsung',  
  17.         'htc',  
  18.         'sgh',  
  19.         'lg',  
  20.         'sharp',  
  21.         'sie-',  
  22.         'philips',  
  23.         'panasonic',  
  24.         'alcatel',  
  25.         'lenovo',  
  26.         'iphone',  
  27.         'ipod',  
  28.         'blackberry',  
  29.         'meizu',  
  30.         'android',  
  31.         'netfront',  
  32.         'symbian',  
  33.         'ucweb',  
  34.         'windowsce',  
  35.         'palm',  
  36.         'operamini',  
  37.         'operamobi',  
  38.         'openwave',  
  39.         'nexusone',  
  40.         'cldc',  
  41.         'midp',  
  42.         'wap',  
  43.         'mobile' 
  44.         );  
  45.         // 从HTTP_USER_AGENT中查找手机浏览器的关键字  
  46.         if(preg_match("/(" . implode('|'$clientkeywords) . ")/i"strtolower($_SERVER['HTTP_USER_AGENT']))) {  
  47.             return true;  
  48.         }  
  49.    
  50.     }  
  51.    
  52.     //协议法,因为有可能不准确,放到最后判断  
  53.     if (isset ($_SERVER['HTTP_ACCEPT'])) {  
  54.         // 如果只支持wml并且不支持html那一定是移动设备  
  55.         // 如果支持wml和html但是wml在html之前则是移动设备  
  56.         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')))) {  
  57.             return true;  
  58.         }  
  59.     }  
  60.        
  61. return false;  

上面的方法也存在一些小问题,这里我根据自己的经验来告诉大我们可以使用屏幕宽度来实现再加机器类型了,因为有时HTTP_USER_AGENT信息在我们上面并未定义过了,不过上面实现几乎兼容了主流手机了.

我们还可以使用js:

  1. <html> 
  2.  <body> 
  3.   <script type="text/javascript"
  4.    function browserRedirect() { 
  5.     var sUserAgent = navigator.userAgent.toLowerCase(); 
  6.     var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"
  7.     var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"
  8.     var bIsMidp = sUserAgent.match(/midp/i) == "midp"
  9.     var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"
  10.     var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"
  11.     var bIsAndroid = sUserAgent.match(/android/i) == "android"
  12.     var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"
  13.     var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"
  14.     if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { 
  15.      window.location.href = 'http://url/mobile.html'
  16.     } else { 
  17.      window.location = 'http://url/pc.html'
  18.     } 
  19.    } 
  20.    browserRedirect(); 
  21.   </script> 
  22.  </body> 
(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容