国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

php 判斷訪問者是否手機客戶端實例

2024-05-04 21:47:57
字體:
來源:轉載
供稿:網友

最近移動互聯(lián)網火爆了我們需要做一個PC站與WAP站,要實現(xiàn)如果用戶是電腦訪問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.         //此數(shù)組有待完善  
  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.     //協(xié)議法,因為有可能不準確,放到最后判斷  
  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;  

上面的方法也存在一些小問題,這里我根據(jù)自己的經驗來告訴大我們可以使用屏幕寬度來實現(xiàn)再加機器類型了,因為有時HTTP_USER_AGENT信息在我們上面并未定義過了,不過上面實現(xiàn)幾乎兼容了主流手機了.

我們還可以使用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> 
  23. </html>  

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 合江县| 临江市| 察隅县| 古蔺县| 扎囊县| 涞源县| 襄汾县| 莫力| 察哈| 孝感市| 京山县| 长治市| 浦县| 牡丹江市| 宝坻区| 北海市| 刚察县| 阿巴嘎旗| 天全县| 河间市| 方正县| 宜良县| 平泉县| 苏尼特右旗| 灵山县| 合阳县| 收藏| 寻甸| 阿拉善盟| 达拉特旗| 灵寿县| 台江县| 县级市| 盐源县| 吐鲁番市| 邻水| 安义县| 三穗县| 时尚| 濮阳县| 南木林县|