一、目的:本教程適用於 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