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

overme7个月前 (10-17)网页设计421
熟悉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 手动安装bshare分享按钮

Discuz 手动安装bshare分享按钮

replyreload += ',' + 330;之前百度网页分享按钮未停用前,很多站都使用的百度网页分享,本站也是。 现在百度网页分享功能停用了,小编就转而使用bshare网页分享工具。 在此分...


		Discuz图片水印设置方法教程

Discuz图片水印设置方法教程

发布图片时,为了防止侵权盗用,或是为了宣传网址引流,需要添加在图片上添加水印。 在此分享Discuz系统图片水印设置方法: Discuz论坛的水印设置很简单,使用制作的水印图片覆盖系统水印地址,然...

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

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

如何使Discuz [attachimg]代码正确解析

在一些较复杂的自定义Discuz!代码中,我们可能需要内嵌Discuz!自有的[attachimg]aid[/attachimg]代码。 案例:某视频播放器支持给每个视频设置一个图片封面,如果每次...

discuz帖子列表页 帖子预览 相关模板

帖子列表页的帖子预览展示用的模板是/template/default/forum/viewthread_preview.htm,展示出来的楼层模板是同目录的viewthread_preview_n...


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

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

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

发表评论

访客

看不清,换一张

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