首页 > 开发 > PHP > 正文

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

2024-05-04 22:00:01
字体:大 中 小
来源:转载
供稿:网友

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

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表