联系官方销售客服
1835022288
028-61286886
短信验证码去除第一层图片验证的方式
代码提供者:@ 易学习 (小波设计)
非常感谢大佬的无私帮助~
目前系统的短信验证是需要首先进行一次图片验证~这种方式很好但是在某些场合不适合~因为经过双重验证对于用户有些麻烦~
前端表单代码:
<button class="btn blue" onclick="dr_ajax_url('/index.php?s=form&c=api&m=send_code&&code='+$('#dr_code').val()+'&id='+$('#dr_dianhua').val())" type="button">获取手机验证码</button>
将提交url转化成上面的样式 然后删除图片验证码的代码
控制器文件建立位置:dayrui/app/form/controllers/Api.php
控制器代码:
<?php namespace Phpcmf\Controllers; // 用户api class Api extends \Phpcmf\Common { /** * 发送验证码 */ public function send_code() { $phone = dr_safe_replace(\Phpcmf\Service::L('input')->get('id')); if (!$phone) { $this->_json(0, dr_lang('手机号码未填写'), ['field' => 'phone']); } elseif (!\Phpcmf\Service::L('Form')->check_phone($phone)) { $this->_json(0, dr_lang('手机号码格式不正确'), ['field' => 'phone']); } if (\Phpcmf\Service::L('Form')->get_mobile_code($phone)) { // 验证操作间隔 $this->_json(1, dr_lang('已经发送稍后再试')); } $code = rand(100000, 999999); $rt = \Phpcmf\Service::M('member')->sendsms_code($phone, $code); if (!$rt['code']) { $this->_json(0, dr_lang('发送失败')); } \Phpcmf\Service::L('Form')->set_mobile_code($phone, $code); $this->_json(1, dr_lang('验证码发送成功')); } }
表单控制器修改:dayrui/app/form/controllers/ {你的表单名称}.php
<?php namespace Phpcmf\Controllers; /** * 二次开发时可以修改本文件,不影响升级覆盖 */ class Xfbd extends \Phpcmf\Home\Form { public function index() { $this->_Home_List(); } public function show() { $this->_Home_Show(); } public function post() { $code = \Phpcmf\Service::L('Form')->get_mobile_code($dianhua); if (!$code) { $this->_json(0, dr_lang('没有发送验证码')); } elseif ($code != $_POST['sms']) { $this->_json(0, dr_lang('验证码不正确')); } $this->_Home_Post(); } } 然后就ok了~亲测可用~
不做效验有时候也不好,会被别人利用来乱发短信