上一篇文章中写了如何使用腾讯云的接口发送短信。
这篇文章来使用短信构建一个“创建验证码”+“核对验证码”的流程。
第一步:在发送验证码时,将验证码与手机号进行持久化。
先在Mysql中建立一张存放验证码的表,表结构如下
再使用命令行建立一个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;
}
}