当前位置:首页 > PHP教程 > php应用 > 列表

php判断客户端是手机设备然后跳转到手机站

发布:smiling 来源: PHP粉丝网  添加日期:2015-04-08 16:57:39 浏览: 评论:0 

现在手机移动互联网已经超过PC了,很多网站都做了手机网站,包括我的小站,这里有一个问题,如果客户直接拿手机打开我的主域名,我该如何做出判断然后跳转到手机网站呢?以下两个函数就可以做到这一点.

以下是我正在用的函数,不过好像在iphone上有点问题,如果你有更好的解决方案,可以留言发给我,不尽感激,代码如下:

  1. // 如果是手机设置,跳转到手机页面 
  2. if (isMobile ()) { 
  3.     Header ( "Location: mobile.php" ); 
  4.     exit (); 
  5.  
  6.  
  7. /** 
  8.  * 判断用户是否为移动用户,可以判断iphone,Android,Windows Mobile和一般的手机系统 
  9.  */ 
  10. function isMobile(){ 
  11.     // 判断 iphone 和 ipad,不跳转 
  12.     $userAgent = $_SERVER['HTTP_USER_AGENT']; 
  13.     if(strpos($userAgent"iPhone") ||  
  14.         strpos($userAgent"iPad") ||  
  15.         strpos($userAgent"iPod") ||  
  16.         strpos($userAgent"iOS")){ 
  17.         return false; 
  18.     } 
  19.  
  20.     // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 
  21.     if (isset ($_SERVER['HTTP_X_WAP_PROFILE'])) { 
  22.         return true; 
  23.     } 
  24.  
  25.     //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 
  26.     if (isset ($_SERVER['HTTP_VIA'])) { 
  27.         //找不到为flase,否则为true 
  28.         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false; 
  29.     } 
  30.  
  31.     //判断手机发送的客户端标志,兼容性有待提高 
  32.     if (isset ($_SERVER['HTTP_USER_AGENT'])) { 
  33.         $clientkeywords = array ( 
  34.             'nokia'
  35.             'sony'
  36.             'ericsson'
  37.             'mot'
  38.             'samsung'
  39.             'htc'
  40.             'sgh'
  41.             'lg'
  42.             'sharp'
  43.             'sie-'
  44.             'philips'
  45.             'panasonic'
  46.             'alcatel'
  47.             'lenovo'
  48.             'iphone'
  49.             'ipod'
  50.             'blackberry'
  51.             'meizu'
  52.             'android'
  53.             'netfront'
  54.             'symbian'
  55.             'ucweb'
  56.             'windowsce'
  57.             'palm'
  58.             'operamini'
  59.             'operamobi'
  60.             'openwave'
  61.             'nexusone'
  62.             'cldc'
  63.             'midp'
  64.             'wap'
  65.             'mobile' 
  66.         ); 
  67.  
  68.         // 从HTTP_USER_AGENT中查找手机浏览器的关键字 
  69.         if (preg_match("/(" . implode('|'$clientkeywords) . ")/i"strtolower($_SERVER['HTTP_USER_AGENT']))) { 
  70.             return true; 
  71.         } 
  72.     } 
  73.  
  74.     //协议法,因为有可能不准确,放到最后判断 
  75.     if (isset ($_SERVER['HTTP_ACCEPT'])) { 
  76.         // 如果只支持wml并且不支持html那一定是移动设备 
  77.         // 如果支持wml和html但是wml在html之前则是移动设备 
  78.         if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) &&    //开源软件:phpfensi.com 
  79.             (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { 
  80.             return true; 
  81.         } 
  82.     } 
  83.  
  84.     return false; 
  85. }

Tags: php手机客户端 php跳转手机站

分享到: