加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 判断访问者是否是手机客户端实例

发布时间:2023-06-12 14:40:52 所属栏目:PHP教程 来源:
导读:最近移动互联网火爆了我们需要做一个PC站与WAP站,要实现如果用户是电脑访问WAP站就自动进入PC站,反之一样,下面我整理了一些代码与大家一起来看看.

方法一,判断HTTP_USER_AGENT,代码如下:

$agent = strtolower(
最近移动互联网火爆了我们需要做一个PC站与WAP站,要实现如果用户是电脑访问WAP站就自动进入PC站,反之一样,下面我整理了一些代码与大家一起来看看.

方法一,判断HTTP_USER_AGENT,代码如下:

$agent = strtolower($_SERVER['HTTP_USER_AGENT']);   
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")) {  
    Header("HTTP/1.1 301 Moved Permanently");  
    header("Location:####");  die;  

方法二,判断HTTP_ACCEPT,代码如下:

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') <   
strpos($_SERVER['HTTP_ACCEPT'],'text/html')) )) {//手机访问   
    Header("HTTP/1.1 301 Moved Permanently");  
    header("Location:####"); die;  

以上两个方法都有局限性,下面将此两种方法整合起来判断,代码如下:

function isMobile() {  
    if(isset($_SERVER['HTTP_X_WAP_PROFILE'])) {  
        return true;  
    }  
    if(isset ($_SERVER['HTTP_VIA'])) {  
        //找不到为flase,否则为true  
        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;  
    }  
    if(isset($_SERVER['HTTP_USER_AGENT'])) {  
        //此数组有待完善  
        $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' 
        );  
        // 从HTTP_USER_AGENT中查找手机浏览器的关键字  
        if(preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {  
            return true;  
        }  
   
    }  
   
    //协议法,因为有可能不准确,放到最后判断  
    if (isset ($_SERVER['HTTP_ACCEPT'])) {  
        // 如果只支持wml并且不支持html那一定是移动设备  
        // 如果支持wml和html但是wml在html之前则是移动设备  
        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')))) {  
            return true;  
        }  
    }  
       
return false;  

上面的方法也存在一些小问题,这里我根据自己的经验来告诉大我们可以使用屏幕宽度来实现再加机器类型了,因为有时HTTP_USER_AGENT信息在我们上面并未定义过了,不过上面实现几乎兼容了主流手机了.

我们还可以使用js:

<html> 
 <body> 
  <script type="text/javascript"> 
   function browserRedirect() { 
    var sUserAgent = navigator.userAgent.toLowerCase(); 
    var bIsIpad = sUserAgent.match(/ipad/i) == "ipad"; 
    var bIsIphoneOs = sUserAgent.match(/iphone os/i) == "iphone os"; 
    var bIsMidp = sUserAgent.match(/midp/i) == "midp"; 
    var bIsUc7 = sUserAgent.match(/rv:1.2.3.4/i) == "rv:1.2.3.4"; 
    var bIsUc = sUserAgent.match(/ucweb/i) == "ucweb"; 
    var bIsAndroid = sUserAgent.match(/android/i) == "android"; 
    var bIsCE = sUserAgent.match(/windows ce/i) == "windows ce"; 
    var bIsWM = sUserAgent.match(/windows mobile/i) == "windows mobile"; 
    if (bIsIpad || bIsIphoneOs || bIsMidp || bIsUc7 || bIsUc || bIsAndroid || bIsCE || bIsWM) { 
     window.location.href = 'http://url/mobile.html'; 
    } else { 
     window.location = 'http://url/pc.html'; 
    } 
   } 
   browserRedirect(); 
  </script> 
 </body> 
</html>  
 

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章