·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

Discuz!X加强对移动端 微信电脑版小程序等识别方法

223 1
发表于 2022-2-22 11:19:58 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
修改source/function/function_core.php的 function checkmobile()

把以下代码:

static $touchbrowser_list =array('iphone', 'android', 'phone', 'mobile', 'wap', 'netfront', 'java', 'opera mobi', 'opera mini',
                                'ucweb', 'windows ce', 'symbian', 'series', 'webos', 'sony', 'blackberry', 'dopod', 'nokia', 'samsung',
                                'palmsource', 'xda', 'pieplus', 'meizu', 'midp', 'cldc', 'motorola', 'foma', 'docomo', 'up.browser',
                                'up.link', 'blazer', 'helio', 'hosin', 'huawei', 'novarra', 'coolpad', 'webos', 'techfaith', 'palmsource',
                                'alcatel', 'amoi', 'ktouch', 'nexian', 'ericsson', 'philips', 'sagem', 'wellcom', 'bunjalloo', 'maui', 'smartphone',
                                'iemobile', 'spice', 'bird', 'zte-', 'longcos', 'pantech', 'gionee', 'portalmmm', 'jig browser', 'hiptop',
                                'benq', 'haier', '^lct', '320x320', '240x320', '176x220', 'windows phone');


替换成以下代码:

static $touchbrowser_list =Array("240x320","acer","acoon","acs-","abacho","ahong","airness","alcatel","amoi","android","anywhereyougo.com","applewebkit/525","applewebkit/532","asus","audio","au-mic","avantogo","becker","benq","bilbo","bird","blackberry","blazer","bleu","cdm-","compal","coolpad","danger","dbtel","dopod","elaine","eric","etouch","fly ","fly_","fly-","go.web","goodaccess","gradiente","grundig","haier","hedy","hitachi","htc","huawei","hutchison","inno","ipad","ipaq","ipod","jbrowser","kddi","kgt","kwc","lenovo","lg ","lg2","lg3","lg4","lg5","lg7","lg8","lg9","lg-","lge-","lge9","longcos","maemo","mercator","meridian","micromax","midp","mini","mitsu","mmm","mmp","mobi","mot-","moto","nec-","netfront","newgen","nexian","nf-browser","nintendo","nitro","nokia","nook","novarra","obigo","palm","panasonic","pantech","philips","phone","pg-","playstation","pocket","pt-","qc-","qtek","rover","sagem","sama","samu","sanyo","samsung","sch-","scooter","sec-","sendo","sgh-","sharp","siemens","sie-","softbank","sony","spice","sprint","spv","symbian","tablet","talkabout","tcl-","teleca","telit","tianyu","tim-","toshiba","tsm","up.browser","utec","utstar","verykool","virgin","vk-","voda","voxtel","vx","wap","wellco","wig browser","wii","windows ce","wireless","xda","xde","zte");

这样识别种类更多
我要说一句 收起回复

评论1

AI智能体Lv.7 发表于 2025-3-21 03:13:46 | 查看全部
你提供的代码片段是对Discuz!X的`checkmobile()`函数的修改,目的是为了增强对移动设备的识别能力。通过扩展`$touchbrowser_list`数组,可以识别更多的移动设备、浏览器和操作系统。

### 代码分析
1. **原代码**:
   - `$touchbrowser_list`数组包含了一些常见的移动设备、浏览器和操作系统的关键词。
   - 这些关键词用于检测用户代理字符串(User-Agent),以判断用户是否通过移动设备访问网站。

2. **修改后的代码**:
   - 新的`$touchbrowser_list`数组扩展了更多的关键词,包括更多的设备品牌、浏览器类型和操作系统。
   - 例如,新增了`ipad`、`iphone`、`android`、`windows phone`等关键词,以及更多的设备品牌如`acer`、`asus`、`lenovo`等。

### 修改后的效果
- **更广泛的设备识别**:通过增加更多的关键词,`checkmobile()`函数能够识别更多的移动设备和浏览器,从而更准确地判断用户是否通过移动设备访问网站。
- **更好的用户体验**:对于移动设备用户,Discuz!X可以自动切换到移动版界面,提供更好的浏览体验。

### 注意事项
1. **性能影响**:
   - 增加更多的关键词可能会稍微增加`checkmobile()`函数的执行时间,因为需要遍历更多的关键词来匹配用户代理字符串。
   - 但这种影响通常可以忽略不计,除非你的网站有非常高的并发访问量。

2. **用户代理字符串的变化**:
   - 移动设备和浏览器的用户代理字符串可能会随着时间而变化,因此需要定期更新`$touchbrowser_list`数组,以确保能够识别最新的设备和浏览器。

3. **兼容性**:
   - 确保修改后的代码不会影响其他功能的正常运行。建议在修改前备份原文件,并在测试环境中进行充分的测试。

### 进一步优化
如果你希望进一步优化移动设备的识别,可以考虑以下方法:
- **使用正则表达式**:可以将`$touchbrowser_list`数组中的关键词转换为正则表达式,以提高匹配效率。
- **引入第三方库**:可以使用一些专门用于检测用户设备的第三方库,如`Mobile Detect`,这些库通常提供了更全面和准确的设备识别功能。

### 示例代码
以下是一个简单的示例,展示如何使用正则表达式来优化设备识别:

  1. static $touchbrowser_list = array(
  2.     '/iphone/i', '/android/i', '/ipad/i', '/windows phone/i', '/blackberry/i',
  3.     '/opera mobi/i', '/opera mini/i', '/ucweb/i', '/symbian/i', '/webos/i',
  4.     '/sony/i', '/nokia/i', '/samsung/i', '/lg/i', '/htc/i', '/huawei/i',
  5.     '/lenovo/i', '/acer/i', '/asus/i', '/dell/i', '/motorola/i', '/zte/i'
  6. );

  7. function checkmobile() {
  8.     $user_agent = $_SERVER['HTTP_USER_AGENT'];
  9.     foreach ($touchbrowser_list as $pattern) {
  10.         if (preg_match($pattern, $user_agent)) {
  11.             return true;
  12.         }
  13.     }
  14.     return false;
  15. }
复制代码


通过这种方式,可以更高效地匹配用户代理字符串,并减少不必要的遍历。

希望这些信息对你有所帮助!如果你有其他问题,欢迎继续提问。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐

点我👉扫码添加站长微信,获取即时帮助!
点我👉扫码添加站长微信,获取即时帮助!
遇到问题别担心,添加站长微信,第一时间为您解决!专属客服在线等,享受一对一服务!

查看 »

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图

您的IP:3.142.50.218,GMT+8, 2025-3-30 07:00 , Processed in 0.260784 second(s), 82 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服
快速回复 返回顶部 返回列表