关于手机验证码的获取与验证方法

时间:2024-05-19 15:45:36

1.设计一个简单的手机验证界面:

关于手机验证码的获取与验证方法

2.为获取验证码设置点击事件,并将值发送到send()方法:



$(document).on('click','#aaa',function () {
    var a = $("[name='phone']").val();
    if (a==""){
        return false;//判断输入的手机号是否为空
    }
    $.get(
        "{:url('index/send')}",
        {phone:a},
        function () {

        }
    )

})

3.判断是否能够传输值

关于手机验证码的获取与验证方法

4.传输成功之后,为数据库中添加字段,前台控制器方法为:

    public function send(){
        $data['phone']=input('get.phone');//获取手机号
        $data['yzm'] = rand(1000,9999);//设置随机数
        //http://api.k780.com/?app=sms.send&tempid=你创建的模板ID&param=替换参数&phone=手机号码&appkey=APPKEY&sign=SIGN&format=json
        $data['y_time'] = time();//添加时间戳
        $res = Db::table('yz')->insert($data);//将数据添加至yz数据库
        if ($res){
            return 1;//添加成功,则返回1
        }
    }
}

数据库中的字段:

关于手机验证码的获取与验证方法

添加成功后,json返回:

$.get(
    "{:url('index/send')}",
    {phone:a},
    function (data) {
        if (data==1){
            alert('发送成功');
        }
    }
)

5.随后进行验证,以及修改验证码的状态


class Index extends Controller {
    public function index(){
        if (Request::instance()->isGet()){
            return view();
        }else{
            $val = input('post.yz');//接收表单中输入的验证码
            //print_r($val);
            if ($val==""){
                $this->error('验证码不能为空');//判断验证码是否为空
            }
            //进行数据查询,判断接收到的验证码是否存在以及状态是否为1
            $res = Db::table('yz')->where('yzm','like',$val)->where('status','in',1)->find();
            if ($res){
                $t = time();//获取当前时间
                if ($res['y_time']-$t>60){//判断时间,如果时间大于60秒,则验证码过期
                    $this->error('验证码过期');
                }
                Db::table('yz')->where('yzm','like',$val)->where('status','in',1)->update(['status'=>2]);
                //如果登录成功,表明已经使用过该验证码,则改变其状态
                $this->success('登录成功');
            }else{
                $this->error('验证码错误');
            }
        }
    }

让我们来看一看效果:

关于手机验证码的获取与验证方法

关于手机验证码的获取与验证方法

如果时间超时,则显示验证码已过期,这里就不一一展示了。