分享经验 版主:论坛审计组
短信验证码去除第一层图片验证的方式
类型:迅睿CMS 更新时间:2020-09-26 19:53:11

短信验证码去除第一层图片验证的方式

代码提供者:@ 易学习 (小波设计)

非常感谢大佬的无私帮助~

目前系统的短信验证是需要首先进行一次图片验证~这种方式很好但是在某些场合不适合~因为经过双重验证对于用户有些麻烦~

前端表单代码:

<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了~亲测可用~


回帖
  • 小黄人 18html.com
    #1楼    小黄人 18html.com
    2020-08-26 13:50:51
    Chrome 0
    短信验证最好是能开启关闭验证码
    不做效验有时候也不好,会被别人利用来乱发短信
  • 易学习
    #2楼    易学习
    2020-08-26 14:04:20
    Chrome 0
    短信乱发坑你小事,学习一下就行了,实际项目不建议这么干了
  • 123
    #3楼    123
    2020-08-26 14:05:35
    Chrome 0
    易学习 嗯呐~先看一段时间效果~如果实在太多了在使用原来的方法~
  • 123
    #4楼    123
    2020-08-26 14:06:08
    Chrome 0
    小黄人 18html.com 是的~不过还是先跑一段时间试试~~
  • 帝云网络
    #5楼    帝云网络
    2020-09-01 12:36:54
    Chrome 0
    有些场景下确实不需要图形验证码,官方注册也支持开发,但强制开启了
    image
  • 流浪的乞丐
    #6楼    流浪的乞丐
    2020-09-26 19:53:11
    小米手机 0
    确实,需要这个东西!!!