Discuz判断手机端访问的说明教程

overme6个月前 (10-17)网页设计361
熟悉DZ的朋友都知道,Discuz系统是会根据浏览器客户端的不同,切换PC版或手机版。那么具体是怎么实现的了解吗?

实现手机端判断,依靠了一个函数,名为checkmobile(),位置在/source/function/function_core.php中,如下所示:

返回2是触屏版,返回3是WML版。再配合source/class/discuz/discuz_application.php中的代码,就实现了跳转。

  1. function checkmobile() {
  2. global $_G;
  3. $mobile = array();
  4. static $touchbrowser_list =array(‘iphone’, ‘android’, ‘phone’, ‘mobile’, ‘wap’, ‘netfront’, ‘java’, ‘opera mobi’, ‘opera mini’,
  5. ‘ucweb’, ‘windows ce’, ‘symbian’, ‘series’, ‘webos’, ‘sony’, ‘blackberry’, ‘dopod’, ‘nokia’, ‘samsung’,
  6. ‘palmsource’, ‘xda’, ‘pieplus’, ‘meizu’, ‘midp’, ‘cldc’, ‘motorola’, ‘foma’, ‘docomo’, ‘up.browser’,
  7. ‘up.link’, ‘blazer’, ‘helio’, ‘hosin’, ‘huawei’, ‘novarra’, ‘coolpad’, ‘webos’, ‘techfaith’, ‘palmsource’,
  8. ‘alcatel’, ‘amoi’, ‘ktouch’, ‘nexian’, ‘ericsson’, ‘philips’, ‘sagem’, ‘wellcom’, ‘bunjalloo’, ‘maui’, ‘smartphone’,
  9. ‘iemobile’, ‘spice’, ‘bird’, ‘zte-‘, ‘longcos’, ‘pantech’, ‘gionee’, ‘portalmmm’, ‘jig browser’, ‘hiptop’,
  10. ‘benq’, ‘haier’, ‘^lct’, ‘320×320’, ‘240×320’, ‘176×220’, ‘windows phone’);
  11. static $wmlbrowser_list = array(‘cect’, ‘compal’, ‘ctl’, ‘lg’, ‘nec’, ‘tcl’, ‘alcatel’, ‘ericsson’, ‘bird’, ‘daxian’, ‘dbtel’, ‘eastcom’,
  12. ‘pantech’, ‘dopod’, ‘philips’, ‘haier’, ‘konka’, ‘kejian’, ‘lenovo’, ‘benq’, ‘mot’, ‘soutec’, ‘nokia’, ‘sagem’, ‘sgh’,
  13. ‘sed’, ‘capitel’, ‘panasonic’, ‘sonyericsson’, ‘sharp’, ‘amoi’, ‘panda’, ‘zte’);
  14. static $pad_list = array(‘ipad’);
  15. $useragent = strtolower($_SERVER[‘HTTP_USER_AGENT’]);
  16. if(dstrpos($useragent, $pad_list)) {
  17. return false;
  18. }
  19. if(($v = dstrpos($useragent, $touchbrowser_list, true))){
  20. $_G[‘mobile’] = $v;
  21. return ‘2’;
  22. }
  23. if(($v = dstrpos($useragent, $wmlbrowser_list))) {
  24. $_G[‘mobile’] = $v;
  25. return ‘3’; //wml版
  26. }
  27. $brower = array(‘mozilla’, ‘chrome’, ‘safari’, ‘opera’, ‘m3gate’, ‘winwap’, ‘openwave’, ‘myop’);
  28. if(dstrpos($useragent, $brower)) return false;
  29. $_G[‘mobile’] = ‘unknown’;
  30. if(isset($_G[‘mobiletpl’][$_GET[‘mobile’]])) {
  31. return true;
  32. } else {
  33. return false;
  34. }
  35. }

复制代码

以上,及时discuz系统判断手机客户端的方法

相关文章

Discuz主题链接地址URL显示完全的修改教程

登陆FTP,打开 source/function/function_discuzcode.php 下载到本地,用代码编辑器编辑 搜索 如下代码 $length = 65; if(strle...

discuz通过{eval }在模板中运行 PHP语句

为了安全起见,discuz 系统默认模板文件无法直接用 <?php … ?> 来运行PHP语句,只能通过固定标签 {eval} 在模板中运行 PHP 语句。 discuz模板php单行...


		Discuz网站SEO优化,archiver功能开启还是关闭

Discuz网站SEO优化,archiver功能开启还是关闭

部分使用Discuz的朋友,认为静态链接利于搜索引擎爬虫抓取,因此开启了archiver功能。 Discuz archiver功能缺点:页面中的keywords,description都是相同的,...


		Discuz 核心函数class_core.php文件讲解

Discuz 核心函数class_core.php文件讲解

error_reporting(E_ALL); //设置error级别为报告所有错误 //定义常量值 define(‘IN_DISCUZ’, true); //设置常量IN_DISCUZ为true...


		Discuz forum_index.php文件分析

Discuz forum_index.php文件分析

<?php /** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is s...


		Discuz手机版相关帖子封面图调用方法

Discuz手机版相关帖子封面图调用方法

Discuz手机版套用PC端相关帖子模板,如何实现帖子封面调用,叠加CSS实现效果如下: 调用方法如下: 1、进入Discuz程序目录source\module\forum,打开forum_vi...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。