PHP項目實現手機端和PC端的頁面切換


目前訪問頁面的要切換成手機端和PC端,原理是通過對設備作出判斷,顯示不同的功能和頁面。

如果手機端和PC端的功能結構不相同,一般會寫兩套系統,一套適用於PC端,一套適用於手機端。

如果功能相同,則只需要更換模板。

首先這是一套判斷設備的代碼。

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['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;
 }

這個函數用於判斷設備類型是手機還是PC。

把這個函數放到公共函數里,在自動加載的類方法里進行判斷。

例如在TP框架下,我把這段函數放在公共的function里。

然后在基本控制器里判斷,如果為手機端,則切換模板為手機主題。

class IndexController extends BaseController {
    Public function _initialize(){
        //移動設備瀏覽,則切換模板
        if (ismobile()) {
            //設置默認默認主題為 Mobile
            C('DEFAULT_THEME','Mobile');
        }
        //............你的更多代碼.......
    }
}

同樣要更換功能則需要找到更底層的控制器進行判斷。

這個方法不適用所有項目,但是原理如此。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM