zoukankan      html  css  js  c++  java
  • PHP判断访问者手机移动端还是PC端的函数,亲测好用

    ,用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端,
    我们团队在开发erdaicms二代旅游CMS网站管理系统的时候(http://www.erdaicms.com),分别开发了PC端和手机端,需要实现,用手机访问PC端WWW域名的时候,自动判断跳转到移动端,用电脑访问M域名手机网站的时候,自动跳转到PC端,于是有了下面这个判断函数:

     1 /*移动端判断*/
     2 function isMobile()
     3 { 
     4     // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
     5     if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
     6     {
     7         return true;
     8     } 
     9     // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    10     if (isset ($_SERVER['HTTP_VIA']))
    11     { 
    12         // 找不到为flase,否则为true
    13         return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
    14     } 
    15     // 脑残法,判断手机发送的客户端标志,兼容性有待提高
    16     if (isset ($_SERVER['HTTP_USER_AGENT']))
    17     {
    18         $clientkeywords = array ('nokia',
    19             'sony',
    20             'ericsson',
    21             'mot',
    22             'samsung',
    23             'htc',
    24             'sgh',
    25             'lg',
    26             'sharp',
    27             'sie-',
    28             'philips',
    29             'panasonic',
    30             'alcatel',
    31             'lenovo',
    32             'iphone',
    33             'ipod',
    34             'blackberry',
    35             'meizu',
    36             'android',
    37             'netfront',
    38             'symbian',
    39             'ucweb',
    40             'windowsce',
    41             'palm',
    42             'operamini',
    43             'operamobi',
    44             'openwave',
    45             'nexusone',
    46             'cldc',
    47             'midp',
    48             'wap',
    49             'mobile'
    50             ); 
    51         // 从HTTP_USER_AGENT中查找手机浏览器的关键字
    52         if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
    53         {
    54             return true;
    55         } 
    56     } 
    57     // 协议法,因为有可能不准确,放到最后判断
    58     if (isset ($_SERVER['HTTP_ACCEPT']))
    59     { 
    60         // 如果只支持wml并且不支持html那一定是移动设备
    61         // 如果支持wml和html但是wml在html之前则是移动设备
    62         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'))))
    63         {
    64             return true;
    65         } 
    66     } 
    67     return false;
    68 } 
  • 相关阅读:
    Linux环境下安装JDK
    CentOS 7 更改主机名
    Find Pivot Index之Python实现
    MySQL基本操作之数据库基本操作
    Linux环境下安装单实例MySQL 5.7
    基于时间的ACL配置
    动态ACL的配置
    自反ACL
    OSFPv3的配置
    RIPng 配置
  • 原文地址:https://www.cnblogs.com/webenh/p/5621890.html
Copyright © 2011-2022 走看看