discuz手機瀏覽切換到電腦版後無法再切換到手機版,原理分析
阿新 • • 發佈:2019-01-06
切換原理
discuz手機版切換電腦版,底部連結:電腦版,url末尾新增引數mobile=no, 新頁面會執行函式 source\class\discuz\discuz_application.php->init()->$this->_init_mobile()if(getgpc('mobile')==='no'){
dsetcookie('mobile','no',3600);
$nomobile =true;
} elseif($this->var['cookie']['mobile']=='no'&& getgpc('mobile')=== 'yes'){
checkmobile();
dsetcookie('mobile','');
} elseif($this->var['cookie']['mobile']=='no'){
$nomobile =true;
} elseif(!checkmobile()){
$nomobile =true;
}
設定有效期為1小時的mobile=no的cookie。
如果沒有傳引數,根據mobile=no的cookie,
$nomobile
=true;
在下面直接返回false;
並沒有設定常量IN_MOBILE,
面在頁面在選擇模板時,
if( defined('IN_MOBILE')&&!defined('TPL_DEFAULT')&& strpos($file,'mobile/')===false||(isset($_G['forcemobilemessage'])&& $_G['forcemobilemessage'])){
$file ='mobile/'.$oldfile;
}
只有IN_MOBILE被複制後,才會選擇moblie手機模板。