短信验证码去除第一层图片验证的方式
代码提供者:@ 易学习 (小波设计)
非常感谢大佬的无私帮助~
目前系统的短信验证是需要首先进行一次图片验证~这种方式很好但是在某些场合不适合~因为经过双重验证对于用户有些麻烦~
前端表单代码:
<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了~亲测可用~
不做效验有时候也不好,会被别人利用来乱发短信