分享

PHP开发小技巧⑥—判断是否是移动端访问

 小马哥技术屋 2016-12-20
  在开发中这一技巧也是我们经常用到的,现在使用手机比使用PC的更为方便,所以有时为了使系统更加友好,要自动的判断是否是移动端进行访问,如果是则让其进入不同的路径。前些日子我也写过一遍博文:PHP判断访客是否是手机端(移动端浏览器)访问的4种方法,写的比较详细,今天这篇主要是将几种方法合成了一个函数,使用起来更为方便。

        下面就是其代码实现过程:

  1. <?php  
  2.   
  3. /** 
  4.  * ======================================= 
  5.  * Created by Zhihua_W. 
  6.  * Author: Zhihua_W 
  7.  * Date: 2016/12/5 0006 
  8.  * Time: 上午 8:45 
  9.  * Project: PHP开发小技巧 
  10.  * Power: 判断是否是移动端访问 
  11.  * ======================================= 
  12.  */  
  13.   
  14. /** 
  15.  * 判断当前访问的用户是PC端,还是手机端,返回true为手机端,false为PC端 
  16.  * @return boolean 
  17.  */  
  18. function isMobile()  
  19. {  
  20.     // 如果有HTTP_X_WAP_PROFILE则一定是移动设备  
  21.     if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))  
  22.         return true;  
  23.   
  24.     // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息  
  25.     if (isset ($_SERVER['HTTP_VIA'])) {  
  26.         // 找不到为flase,否则为true  
  27.         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;  
  28.     }  
  29.     // 脑残法,判断手机发送的客户端标志,兼容性有待提高  
  30.     if (isset ($_SERVER['HTTP_USER_AGENT'])) {  
  31.         $clientkeywords = array('nokia''sony''ericsson''mot''samsung''htc''sgh''lg''sharp''sie-''philips''panasonic''alcatel''lenovo''iphone''ipod''blackberry''meizu''android''netfront''symbian''ucweb''windowsce''palm''operamini''operamobi''openwave''nexusone''cldc''midp''wap''mobile');  
  32.         // 从HTTP_USER_AGENT中查找手机浏览器的关键字  
  33.         if (preg_match("/(" . implode('|'$clientkeywords) . ")/i"strtolower($_SERVER['HTTP_USER_AGENT'])))  
  34.             return true;  
  35.     }  
  36.     // 协议法,因为有可能不准确,放到最后判断  
  37.     if (isset ($_SERVER['HTTP_ACCEPT'])) {  
  38.         // 如果只支持wml并且不支持html那一定是移动设备  
  39.         // 如果支持wml和html但是wml在html之前则是移动设备  
  40.         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')))) {  
  41.             return true;  
  42.         }  
  43.     }  
  44.     return false;  
  45. }  
  46.   
  47. ?> 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多