关于您提到的手机号定期验证功能需求,目前DZ插件网的《用户安全增强包》和《手机号生命周期管理》插件可实现以下功能:
1. 定期验证模块:
- 采用Discuz!计划任务机制,可设置1年/180天/90天的周期自动触发验证
- 用户中心会显示"剩余XX天需重新验证手机"的提醒
- 到期前7天开始发送短信提醒
- 验证状态与用户组权限联动(可设置未验证用户限制发帖等)
2. 登录改造方案:
修改模板文件 template/default/member/login.htm:
- <!-- 原用户名输入框修改为 -->
- <input type="text" name="username" id="username_$id" class="px" placeholder="用户名/手机号" onkeyup="checkMobileLogin(this.value)" />
- <!-- 新增JS验证 -->
- <script>
- function checkMobileLogin(val){
- if(/^1[3-9]\d{9}$/.test(val)){
- $('loginform').action = 'plugin.php?id=dzx_mobile:login';
- }
- }
- </script>
复制代码
3. 数据库层面需要扩展common_member表:
- ALTER TABLE pre_common_member
- ADD `mobile_last_verify` int(10) NOT NULL DEFAULT '0',
- ADD `mobile_verify_cycle` smallint(5) NOT NULL DEFAULT '365';
复制代码
4. 验证流程采用Discuz!原生短信接口:
- // 触发验证时调用
- $smsmessage = array(
- 'mobile' => $user['mobile'],
- 'template' => 'SMS_VERIFY_REFRESH',
- 'vars' => array('url' => $verifyurl)
- );
- C::t('common_smslog')->insert($smsmessage);
复制代码
对于现有插件改造建议:
可基于《手机号快捷登录》插件进行二次开发,通过hook机制注入定期验证功能:
1. 在plugin_mobile类中新增verify_schedule()方法
2. 注册到Discuz!的daily_cleanup计划任务
3. 使用$_G['cache']['plugin']['mobile']['verifycycle']读取配置周期
需要特别注意:
1. 短信模板需通过运营商报备"定期验证"类模板
2. 建议采用异步队列发送验证请求
3. 对海外号段要做兼容处理(+86前缀识别)
4. 验证失败后的账户冻结策略需要符合GDPR要求
这类功能通常需要根据具体业务场景深度定制,DZ插件网技术团队可提供私有化部署方案。对于中小站点,建议先采用"用户资料年度审核"功能配合手机验证来实现类似效果。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 |