ホームページ php教程 php手册 php 判断访问者是否手机客户端实例

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

May 25, 2016 pm 04:44 PM

最近移动互联网火爆了我们需要做一个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[&#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;  
}
ログイン後にコピー

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

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;  
}
ログイン後にコピー

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

               
               

文章网址:

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)