【TP3.2.X】(一樣適用於OT) 設置單入口index.php文件,區分PC/WAP/Wechat 三個終端

一、目的:本教程適用於 OneThink1.0、或者TP3.2.X 系列,達到單入口index.php文件,區分PC/WAP/Wechat 三個終端php

二、啓發至 : http://www.thinkphp.cn/code/3516.html           TP3.2官方論壇html

 2.1)核心:defined('APP_STATUS')   or define('APP_STATUS',     ''); // 應用狀態 加載對應的配置文件java

  必定要明白,在TP3.2的核心框架裏面,有個系統常量APP_STATUS,用來加載系統對應的配置文件android

三、上面只介紹了 手機端, 我本身還加入了微信端的判斷 : 效果很好,親測可用web

四、TP3.2.x判斷手機端訪問並設置默認訪問模塊的方法:chrome

手機端訪問時調用Wap手機模塊,實如今手機端訪問時展現出手機網站,無需跳轉域名
首先咱們在./Application/Common/Conf/ 目錄下創建兩個公共配置文件:config.php 和config_wap.phpthinkphp

config.php 中:windows

return array(
    'DEFAULT_MODULE'=>'Index',
    'DEFAULT_CONTROLLER'=>'Index',
    'DEFAULT_ACTION'=>'index',
)

config_wap.php 中:api

return array(
    'DEFAULT_MODULE'=>'Wap',
    'DEFAULT_CONTROLLER'=>'Index',
    'DEFAULT_ACTION'=>'index',
)

而後在入口文件 index.php 中加入手機端判斷方法(建議放到最下面):瀏覽器

function is_mobile_request(){
    $_SERVER['ALL_HTTP'] = isset($_SERVER['ALL_HTTP']) ? $_SERVER['ALL_HTTP'] : '';
    $mobile_browser = '0';
    if(preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|iphone|ipad|ipod|android|xoom)/i', strtolower($_SERVER['HTTP_USER_AGENT'])))
        $mobile_browser++;
    if((isset($_SERVER['HTTP_ACCEPT'])) and (strpos(strtolower($_SERVER['HTTP_ACCEPT']),'application/vnd.wap.xhtml+xml') !== false))
        $mobile_browser++;
    if(isset($_SERVER['HTTP_X_WAP_PROFILE']))
        $mobile_browser++;
    if(isset($_SERVER['HTTP_PROFILE']))
        $mobile_browser++;
        $mobile_ua = strtolower(substr($_SERVER['HTTP_USER_AGENT'],0,4));
        $mobile_agents = array(
            'w3c ','acs-','alav','alca','amoi','audi','avan','benq','bird','blac',
            'blaz','brew','cell','cldc','cmd-','dang','doco','eric','hipt','inno',
            'ipaq','java','jigs','kddi','keji','leno','lg-c','lg-d','lg-g','lge-',
            'maui','maxo','midp','mits','mmef','mobi','mot-','moto','mwbp','nec-',
            'newt','noki','oper','palm','pana','pant','phil','play','port','prox',
            'qwap','sage','sams','sany','sch-','sec-','send','seri','sgh-','shar',
            'sie-','siem','smal','smar','sony','sph-','symb','t-mo','teli','tim-',
            'tosh','tsm-','upg1','upsi','vk-v','voda','wap-','wapa','wapi','wapp',
            'wapr','webc','winw','winw','xda','xda-'
        );
     if(in_array($mobile_ua, $mobile_agents))
          $mobile_browser++;
     if(strpos(strtolower($_SERVER['ALL_HTTP']), 'operamini') !== false)
          $mobile_browser++;
     // Pre-final check to reset everything if the user is on Windows  
     if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows') !== false)
          $mobile_browser=0;
     // But WP7 is also Windows, with a slightly different characteristic  
     if(strpos(strtolower($_SERVER['HTTP_USER_AGENT']), 'windows phone') !== false)
          $mobile_browser++;
     if($mobile_browser>0)  
          return true;
     else
          return false;
}

而後,咱們開始用關鍵的APP_STATUS來調用不一樣的模塊:
在index.php文件中的21行後面也就是「定義應用目錄」結束後,加入代碼:

其實,咱們還能夠在下面代碼裏面加入對微信瀏覽器的判斷,而後加載微信模塊的配置文件。

if(is_mobile_request()){ define('APP_STATUS','config_wap'); }else{ define('APP_STATUS','Index'); }

大功告成。
參考文檔:http://document.thinkphp.cn/manual_3_2.html#load_config

 

五、以上代碼,親測有效。 

六、另外附上: PC的chrome瀏覽器  假裝 成手機 普通瀏覽器和微信瀏覽器進行訪問 本地項目,達到測試的目的。傳送門:https://www.jb51.net/softjc/144941.html 

相關文章
相關標籤/搜索