首頁 >後端開發 >PHP問題 >php判斷手機存取不生效怎麼辦

php判斷手機存取不生效怎麼辦

藏色散人
藏色散人原創
2022-11-06 09:17:322009瀏覽

php判斷手機存取不生效的解決方法:1、建立一個php範例檔案;2、定義一個ismobile方法;3、在方法體中透過「if (isset ($_SERVER['HTTP_USER_AGENT'] )) {...}”方式實現判斷是手機登入還是電腦登入存取即可。

php判斷手機存取不生效怎麼辦

本教學操作環境:windows7系統、PHP8.1版、Dell G3電腦。

php判斷手機存取不生效怎麼辦?

利用php判斷是否為手機端的方法

做存取判斷非常好用,貼上到自己的方法中,直接使用

// 查看是否为手机端的方法
//判断是手机登录还是电脑登录
function ismobile() {
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
        return true;
    
    //此条摘自TPM智能切换模板引擎,适合TPM开发
    if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
        return true;
    //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    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[&#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;
}
 
 
 
 
// 查看是否为手机端的方法
//判断是手机登录还是电脑登录
function ismobile() {
    // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
    if (isset ($_SERVER[&#39;HTTP_X_WAP_PROFILE&#39;]))
        return true;
    
    //此条摘自TPM智能切换模板引擎,适合TPM开发
    if(isset ($_SERVER[&#39;HTTP_CLIENT&#39;]) &&&#39;PhoneClient&#39;==$_SERVER[&#39;HTTP_CLIENT&#39;])
        return true;
    //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
    if (isset ($_SERVER[&#39;HTTP_VIA&#39;]))
        //找不到为flase,否则为true
        return stristr($_SERVER[&#39;HTTP_VIA&#39;], &#39;wap&#39;) ? 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;
}

推薦學習:《PHP影片教學

以上是php判斷手機存取不生效怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn