1. ThinkPHP3.2判断是否为手机端访问并跳转到另一个模块的方法
  2. 目录结构
  3. 公共模块CommonHome模块,Mobile模块
  4.  
  5. 配置Application/Common/Conf/config.php文件
  1. 'MODULE_ALLOW_LIST' => 'Home,Mobile'
  1.  
  1. 接下来配置Application/Common/Common/function.php文件 添加isMobile方法 【详见代码】
  1. function isMobile(){
  2. // 如果有HTTP_X_WAP_PROFILE则一定是移动设备
  3. if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
  4. return true;
  5.  
  6. //此条摘自TPM智能切换模板引擎,适合TPM开发
  7. if(isset ($_SERVER['HTTP_CLIENT']) &&'PhoneClient'==$_SERVER['HTTP_CLIENT'])
  8. return true;
  9. //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
  10. if (isset ($_SERVER['HTTP_VIA']))
  11. //找不到为flase,否则为true
  12. return stristr($_SERVER['HTTP_VIA'], 'wap') ? true : false;
  13. //判断手机发送的客户端标志,兼容性有待提高
  14. if (isset ($_SERVER['HTTP_USER_AGENT'])) {
  15. $clientkeywords = array(
  16. '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'
  17. );
  18. //从HTTP_USER_AGENT中查找手机浏览器的关键字
  19. if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
  20. return true;
  21. }
  22. }
  23. //协议法,因为有可能不准确,放到最后判断
  24. if (isset ($_SERVER['HTTP_ACCEPT'])) {
  25. // 如果只支持wml并且不支持html那一定是移动设备
  26. // 如果支持wml和html但是wml在html之前则是移动设备
  27. 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')))) {
  28. return true;
  29. }
  30. }
  31. return false;
  32. }
  1.  
  1. 配置/Application/Home/Controller/CommonController.class.php [公共类] 【详见代码】
  1. public function _initialize(){
  2. if(isMobile()){
  3. C('DEFAULT_MODULE','Mobile');
  4. }
  5. }
  1.  

配置/Application/Mobile/Controller/CommonController.class.php [公共类] 【详见代码】

  1. public function _initialize(){
  2. if(!isMobile()){
  3. C('DEFAULT_MODULE','Home');
  4. }
  5. }

ThinkPHP3.2判断手机端访问并设置默认访问模块的方法的更多相关文章

  1. TP3.2.x判断手机端访问并设置默认访问模块的方法 - ThinkPHP框架

    手机端访问时调用Wap手机模块,实现在手机端访问时展示出手机网站,无需跳转域名首先我们在./Application/Common/Conf/ 目录下建立两个公共配置文件:config.php 和con ...

  2. js判断手机端操作系统(Andorid/IOS)

    非常实用的js判断手机端操作系统(Andorid/IOS),并自动跳转相应下载界面 androidURL = "http://xxx/xxx.apk"; var browser = ...

  3. js判断手机端操作系统的两种方法

    //判断手机端操作系统(Andorid/IOS),并自动跳转相应下载界面 androidURL ="http://xxx/xxx.apk"; var browser = { ver ...

  4. 原生js为页面添加爱心特效和判断手机端还是电脑端登录

    <!-- 为页面添加爱心特效 --> <script type="text/javascript"> (function (window, document ...

  5. dedecms织梦手机端文章内容页图片不能自适应解决方法

    dedecms织梦手机端文章内容页图片不能自适应解决方法: 方法一修改手机端文章页模板代码: 找到并打开手机端的文章内容页模板,将里面的{dede:field.body/}标签修改一下,改为如下的标签 ...

  6. apache启动目录(禁止目录)与设置默认入口文件的方法

    设置默认入口文件的方法: 打开apache的conf目录,找到httpd.conf文件,打开这个文件,搜索dir_module,找到以下截图修改位置进行修改,注意重启apache服务器,修改位置才会生 ...

  7. JavaScript 判断手机端访问并跳转 redirect mobile

    假如你的手机端网站在 /m 目录下 (function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer| ...

  8. PHP判断用户是手机端?还是浏览器端访问?

    function isMobile(){ $useragent=isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ' ...

  9. js判断手机端

    if (window.location.toString().indexOf('pref=padindex') != -1) { } else { if (/AppleWebKit.*Mobile/i ...

随机推荐

  1. ASP.NET MVC 如何解决“上下文的模型已在数据库创建后发生更改”问题

    问题描述:支持"XXContext"(泛指之类的数据库上下文模型)上下文的模型已在数据库创建后发生更改.请考虑使用 Code First 迁移更新数据库. 问题解决:坑爹的MVC会 ...

  2. IPC---信号量

    一.什么是信号量 信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程) 所拥有. 信号量的值为正的时候,说明它空闲.所测试的线程可以锁定而使用它.若为0,说明 它被占用,测试的线 ...

  3. POJ 3009

    http://poj.org/problem?id=3009 一个搜索的题目: 大意就是一个冰球,在冰面上滑动,你打击一次,就沿一个反向滑动,知道碰到墙就会停下,而墙则会破碎. 求从起点到终点的最短的 ...

  4. C# 反射+抽象工厂模式

    此模式可以很好的更换程序使用不同的数据库 1.用到的属性类 using System; using System.Collections.Generic; using System.Linq; usi ...

  5. TokuDB 引擎安装测试

    背景: TokuDB引擎是有Tokutek开发的一个数据库存储引擎,在设计之初便引入了独特的索引算法,在其官网测试的文章中看到TokuDB性能比InnoDB高出很多. MySQL是一个插件式的数据库, ...

  6. ffmpeg-20160803-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  7. CAD2010中文版安装问题记录

    CAD2010中文版安装到简体中文语言包的时候提示[错误1606无法访问网络位置setup],直接打开cad2010 提示 [adui18res.dll not found]: 首先,进入注册表(re ...

  8. 7.django之自定义分页记录

    只是大概记录下步骤: 1.表结构: class UserProfile(models.Model): ''' 用户表 ''' user = models.OneToOneField(User,verb ...

  9. mysql常用函数整理

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 ) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 SELECT CEIL( ...

  10. HTML标记语法总结

    一.HTML标记类型 1.单标记 语法:<标记名>,如:<img>.<br>.<hr> 2.双标记 语法:<标记名>…标记内容…</标 ...