Maison > php教程 > php手册 > php 判断访问者是否手机客户端实例

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

WBOY
Libérer: 2016-05-25 16:44:50
original
1417 Les gens l'ont consulté

最近移动互联网火爆了我们需要做一个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;  
}
Copier après la connexion

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

if (isset($_SERVER[&#39;HTTP_ACCEPT&#39;]) && (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;],&#39;vnd.wap.wml&#39;)!==FALSE) &&(strpos($_SERVER[&#39;HTTP_ACCEPT&#39;],&#39;text/html&#39;)===FALSE || (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;],&#39;vnd.wap.wml&#39;) <   
strpos($_SERVER[&#39;HTTP_ACCEPT&#39;],&#39;text/html&#39;)) )) {//手机访问   
    Header("HTTP/1.1 301 Moved Permanently");  
    header("Location:####"); die;  
}
Copier après la connexion

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

function isMobile() {  
    if(isset($_SERVER[&#39;HTTP_X_WAP_PROFILE&#39;])) {  
        return true;  
    }  
    if(isset ($_SERVER[&#39;HTTP_VIA&#39;])) {  
        //找不到为flase,否则为true  
        return stristr($_SERVER[&#39;HTTP_VIA&#39;], "wap") ? true : false;  
    }  
    if(isset($_SERVER[&#39;HTTP_USER_AGENT&#39;])) {  
        //此数组有待完善  
        $clientkeywords = array (  
        &#39;nokia&#39;,  
        &#39;sony&#39;,  
        &#39;ericsson&#39;,  
        &#39;mot&#39;,  
        &#39;samsung&#39;,  
        &#39;htc&#39;,  
        &#39;sgh&#39;,  
        &#39;lg&#39;,  
        &#39;sharp&#39;,  
        &#39;sie-&#39;,  
        &#39;philips&#39;,  
        &#39;panasonic&#39;,  
        &#39;alcatel&#39;,  
        &#39;lenovo&#39;,  
        &#39;iphone&#39;,  
        &#39;ipod&#39;,  
        &#39;blackberry&#39;,  
        &#39;meizu&#39;,  
        &#39;android&#39;,  
        &#39;netfront&#39;,  
        &#39;symbian&#39;,  
        &#39;ucweb&#39;,  
        &#39;windowsce&#39;,  
        &#39;palm&#39;,  
        &#39;operamini&#39;,  
        &#39;operamobi&#39;,  
        &#39;openwave&#39;,  
        &#39;nexusone&#39;,  
        &#39;cldc&#39;,  
        &#39;midp&#39;,  
        &#39;wap&#39;,  
        &#39;mobile&#39; 
        );  
        // 从HTTP_USER_AGENT中查找手机浏览器的关键字  
        if(preg_match("/(" . implode(&#39;|&#39;, $clientkeywords) . ")/i", strtolower($_SERVER[&#39;HTTP_USER_AGENT&#39;]))) {  
            return true;  
        }  
   
    }  
   
    //协议法,因为有可能不准确,放到最后判断  
    if (isset ($_SERVER[&#39;HTTP_ACCEPT&#39;])) {  
        // 如果只支持wml并且不支持html那一定是移动设备  
        // 如果支持wml和html但是wml在html之前则是移动设备  
        if ((strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) !== false) && (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;) === false || (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) < strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;)))) {  
            return true;  
        }  
    }  
       
    return false;  
}
Copier après la connexion

上面的方法也存在一些小问题,这里我根据自己的经验来告诉大我们可以使用屏幕宽度来实现再加机器类型了,因为有时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 = &#39;http://url/mobile.html&#39;;
    } else {
        window.location = &#39;http://url/pc.html&#39;;
    }
   }
   browserRedirect();
  </script> 
 </body> 
</html>
Copier après la connexion

               
               

文章网址:

随意转载^^但请附上教程地址。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Recommandations populaires
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal