熟悉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系统判断手机客户端的方法

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部