Laravel构建短信验证码验证流程

2018-12-11  本文已影响0人  Invoker_M

上一篇文章中写了如何使用腾讯云的接口发送短信。
这篇文章来使用短信构建一个“创建验证码”+“核对验证码”的流程。

第一步:在发送验证码时,将验证码与手机号进行持久化。

先在Mysql中建立一张存放验证码的表,表结构如下


captcha表结构

再使用命令行建立一个Captcha的Model

php artisan make:model Models/Captcha

在模型内指向表,约定好可写的字段为'phone','code':

//Captcha.php
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
class Captcha extends Model
{
    protected $table = 'captchas';
    protected  $fillable = [
        'phone','code'
    ];
}

接下来在CodeService中加入数据库操作,使用Eloquent的updateOrCreate方法。

public function getCode($phone,$code)
    {
        $result = $this->smsServer->sendWithParam(
            '86',
            $phone,
            $this->templateId,  
            [$code,30],
            $this->sms['smsSign']
        );
        //存入数据库,使用phone字段进行过滤
        Captcha::updateOrCreate(['phone'=>$phone], ['code'=>$code]);
        return json_decode($result, true);
    }

到这里,将发送验证码与验证码持久化的工作做完。

第二步:构建验证码验证接口

直接在CodeService中,添加校验验证码的方法即可

/**
     * @param $phone 接收验证码的手机号
     * @param $code 需要验证的验证码
     */
    public function checkCode($phone,$code){
        $captcha = Captcha::where(['phone'=>$phone,'code'=>$code])->first();
        if ($captcha){
            $captcha->delete();
            return true;
        }else{
            return false;
        }
    }
上一篇下一篇

猜你喜欢

热点阅读