Heim > php教程 > php手册 > Hauptteil

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

WBOY
Freigeben: 2016-05-25 16:44:50
Original
1325 Leute haben es durchsucht

最近移动互联网火爆了我们需要做一个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;  
}
Nach dem Login kopieren

方法二,判断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;  
}
Nach dem Login kopieren

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

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;  
}
Nach dem Login kopieren

上面的方法也存在一些小问题,这里我根据自己的经验来告诉大我们可以使用屏幕宽度来实现再加机器类型了,因为有时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>
Nach dem Login kopieren

               
               

文章网址:

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!