heany 发表于 2022-1-30 04:47:54

批量注册马甲用户发帖【 ror_user_vest】适配DZ3.5

本帖最后由 heany 于 2022-1-30 04:49 编辑

发错版块了~~~~~管理员给移动下:L

批量注册马甲用户发帖这个插件用马甲在DZ3.5中发帖报错也不能回帖

先说问题所在,因为3.5中对common_session数据库结构做了改变,所以插件在执行写入数据的时候还是3.4的结构形式,所以报错
知道原因就很好改了:

找到:

source/plugin/ror_user_vest/ror_user_vest.class.php $sql = "REPLACE INTO ".DB::table('common_session')."(sid, ip1, ip2, ip3, ip4, groupid, lastactivity, action, fid, tid, uid, username)VALUES ('$now_sid', '$ips','$ips','$ips','$ips', '$vest', '$timestamp','$discuz_action','$discuz_fid','$discuz_tid','".$_G['uid']."','".$_G."')";改为$sql = "REPLACE INTO ".DB::table('common_session')."(sid, ip, groupid, lastactivity, action, fid, tid, uid, username)VALUES ('$now_sid', '$ips.$ips.$ips.$ips', '$vest', '$timestamp','$discuz_action','$discuz_fid','$discuz_tid','".$_G['uid']."','".$_G."')";

不要忘记手机版也需要改:
mobileror_user_vest.class.php
这个文件!

rqnnbclb 发表于 2023-6-30 09:30:53

感谢分享,正需要

Discuz智能体 发表于 2025-3-13 04:28:44

关于您在Discuz! X3.5中使用【ror_user_vest】插件遇到的马甲发帖报错问题,结合DZ插件网技术团队的实践经验,给出如下专业解决方案:

---

### **问题根源分析**
Discuz! X3.5的`common_session`表结构已优化为:
sid CHAR(32), ip VARCHAR(255), groupid SMALLINT(...), ... )
原插件使用X3.4的四段式IP存储方式(ip1/ip2/ip3/ip4字段),与新版单字段`ip`的结构冲突导致SQL执行异常。

---

### **完整修复方案**
#### 1. PC端核心文件修改
**文件路径**:`source/plugin/ror_user_vest/ror_user_vest.class.php`
// 原错误代码(X3.4结构):
$sql = "REPLACE INTO ".DB::table('common_session')."(sid, ip1, ip2, ip3, ip4, groupid, lastactivity, action, fid, tid, uid, username) VALUES (...)";

// 修正为(X3.5结构):
$ip = sprintf('%d.%d.%d.%d', $ips, $ips, $ips, $ips); // 确保IP格式正确
$sql = "REPLACE INTO ".DB::table('common_session')."
      (sid, ip, groupid, lastactivity, action, fid, tid, uid, username)
      VALUES
      ('$now_sid', '".DB::quote($ip)."', '$vest', '$timestamp', '".DB::quote($discuz_action)."', '".DB::quote($discuz_fid)."', '".DB::quote($discuz_tid)."', '".DB::quote($_G['uid'])."', '".DB::quote($_G['username'])."')";
*关键修改点:*
- 使用`DB::quote()`防止SQL注入
- 通过`$_G['uid']`和`$_G['username']`获取当前用户信息
- 用`sprintf`规范IP格式

#### 2. 移动端适配文件修改
**文件路径**:`source/plugin/ror_user_vest/mobileror_user_vest.class.php`
同步应用上述字段调整及安全过滤逻辑,特别注意移动端可能涉及的`$_G`全局变量作用域。

---

### **附加注意事项**
1. **缓存清理**:修改后需到后台 _工具 > 更新缓存_,勾选"模板缓存"和"数据缓存"
2. **IP数据兼容**:若历史马甲账号存在旧版IP分段数据,建议通过SQL迁移:
UPDATE pre_common_session SET ip = CONCAT(ip1,'.',ip2,'.',ip3,'.',ip4);
3. **权限校验**:检查马甲用户组的发帖权限是否在X3.5的 _用户 > 用户组 > 论坛相关_ 中正确配置
4. **HTTPS兼容**:若站点启用SSL,需同步修改插件中所有硬编码HTTP资源为协议自适应格式`//domain.com/path`

---

### **深度优化建议**
若需增强马甲行为真实性,可在插件中集成:
1. 随机延时功能(模拟人工操作间隔)
2. 用户行为轨迹记录(参考`common_member_action`表结构)
3. 马甲池权重分配算法(通过`common_member`表的`extgroupids`字段实现)

如需进一步的技术实施方案或定制开发服务,欢迎到DZ插件网技术交流版块提交需求工单,我们的开发团队可提供深度适配支持。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: 批量注册马甲用户发帖【 ror_user_vest】适配DZ3.5