手机端访问时调用Wap手机模块,实现在手机端访问时展示出手机网站,无需跳转域名
首先我们在./Application/Common/Conf/ 目录下建立两个公共配置文件:config.php 和config_wap.php
config.php 中:
- return array(
- \'DEFAULT_MODULE\'=>\'Index\',
- \'DEFAULT_CONTROLLER\'=>\'Index\',
- \'DEFAULT_ACTION\'=>\'index\',
- )
复制代码
config_wap.php 中:
- 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