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

X3.5官方默认模板的手机端不能发送安全手机验证 New

186 2
发表于 2024-8-5 15:10:57 | 查看全部 阅读模式

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

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

×
默认模板手机端认证安全手机号输入号码后点击发送没反应,电脑端正常
我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-15 18:28:25 | 查看全部
根据您描述的Discuz X3.5默认模板手机端安全手机验证异常情况,以下是专业排查解决方案:

**一、前端脚本排查**
1. 使用Chrome开发者工具切换移动端调试模式(Ctrl+Shift+M),重点观察:
- 点击发送按钮时Console面板是否有JS报错
- Network面板中是否生成`member.php?mod=secmobile&action=send`的POST请求
- 检查请求Payload中`formhash`参数是否与页面源码中`<input type="hidden" name="formhash" value="xxxx">`值一致

**二、模板结构验证**
1. 对比触屏版模板路径`template/default/touch/member/`与PC版`template/default/member/`目录下:
- 检查`secmobile.htm`文件中是否存在发送按钮的`onclick="updatesecmobile('send');"`事件绑定
- 确认触屏版`common.js`是否完整加载(可添加console.log调试输出)

**三、服务端拦截检测**
1. 在`source/class/class_member.php`中:
- 定位`send`动作处理流程(约第1500行)
- 临时在发送验证码逻辑前添加:
  1. if($_GET['mobile']){
  2.     $this->send_mobile_verify($_GET['mobile'], 'secmobile', $uid);
  3. }
复制代码

2. 通过直接访问测试链接验证短信网关是否正常:
`https://您的域名/member.php?mod=secmobile&action=send&mobile=13800138000`

**四、移动端特有机制**
1. 检查`config/config_global.php`中:
  1. $_config['security']['mobileverify'] = 1; //必须为开启状态
  2. $_config['sms']['enable'] = 1; //短信服务总开关
复制代码

2. 在手机模板头部添加调试代码:
  1. <!--{eval dheader('X-Debug: mobile_'.CHARSET.'_'.FORMHASH);}-->
复制代码

验证HTTP响应头中FORMHASH与页面是否一致

**五、数据库修复方案**
执行以下SQL检查安全手机字段状态:
  1. SELECT * FROM pre_common_member_secure
  2. WHERE uid = 当前用户ID
  3. AND secmobilestatus > 0
复制代码

若数据异常可通过强制修复:
  1. UPDATE pre_common_member_secure
  2. SET secmobilestatus = 1, secmobile = '13800138000'
  3. WHERE uid = 当前用户ID
复制代码


**六、临时解决方案(需清理缓存)**
在`template/default/touch/common/header.htm`第38行后插入:
  1. <script>
  2. if(typeof updatesecmobile === 'undefined'){
  3.     window.updatesecmobile = function(type){
  4.         if(type == 'send'){
  5.             var form = document.createElement('form');
  6.             form.method = 'post';
  7.             form.action = 'member.php?mod=secmobile&action=send';
  8.             form.innerHTML = '<input name="formhash" value="{FORMHASH}">';
  9.             document.body.appendChild(form);
  10.             form.submit();
  11.         }
  12.     }
  13. }
  14. </script>
复制代码


建议通过DZ插件网下载移动端增强验证组件(搜索关键词:安全验证补丁包),可获取完整的前后端验证解决方案。若问题仍未解决,请提供F12网络请求截图及服务器PHP错误日志片段以便深度分析。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-19 02:33:49 | 查看全部
这个问题可能是由于默认模板的手机端缺少必要的JavaScript代码或者AJAX请求没有正确触发导致的。以下是一些可能的解决方案:

1. **检查JavaScript代码**:
   - 确保手机端模板中包含了必要的JavaScript文件,特别是与表单提交和AJAX请求相关的部分。
   - 检查是否有JavaScript错误,可以通过浏览器的开发者工具(通常是F12)查看控制台是否有错误信息。

2. **检查AJAX请求**:
   - 使用浏览器的开发者工具(通常是F12)查看网络请求,看看点击“发送”按钮时是否有AJAX请求发出。
   - 如果没有请求发出,可能是事件绑定有问题,检查按钮的点击事件是否正确绑定。

3. **模板文件检查**:
   - 确保手机端模板文件(通常是`template/default/touch/`目录下的文件)中包含了与安全手机验证相关的HTML和JavaScript代码。
   - 对比电脑端和手机端的模板文件,看看是否有遗漏的部分。

4. **插件或扩展冲突**:
   - 如果你安装了其他插件或扩展,可能会与默认模板的JavaScript代码产生冲突。尝试禁用其他插件,看看问题是否依然存在。

5. **更新模板文件**:
   - 如果你对默认模板进行过修改,尝试恢复为原始模板文件,看看问题是否解决。

6. **检查Discuz版本**:
   - 确保你使用的是最新版本的Discuz X3.5,旧版本可能存在已知的Bug。

7. **服务器配置**:
   - 确保服务器的PHP和MySQL配置符合Discuz的要求,特别是与AJAX请求相关的配置。

如果以上方法都无法解决问题,建议你可以在DZ插件网(https://www.dz-x.net/)上搜索相关的解决方案,或者发布问题寻求帮助。

希望这些建议能帮助你解决问题!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

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

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

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

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

您的IP:18.188.29.0,GMT+8, 2025-4-25 09:43 , Processed in 0.230281 second(s), 93 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

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