Skip to content
关注公众号,获取新课通知
【重要通知】uniapp实战社区交友交流群更换为:602180461,靓仔/靓女可以重新申请加入哦~

手机验证码api


获取验证码流程:

(1)接收手机号码

(2)验证手机号码合法性

(3)判断是否已经获取过验证码(判断缓存中是否存在当前手机号的验证码,有则提示“你已经获取过验证码了”)

(4)生成4位数随机数字

(5)发送短信(阿里大于)

(6)手机号=>验证码 的形式保存在缓存中(60秒)

(7)提示成功

php
// 发送验证码
public function sendCode(){
    // 获取用户提交手机号码
    $phone = request()->param('phone');
    // 判断是否已经发送过
    if(Cache::get($phone)) throw new BaseException(['code'=>200,'msg'=>'你操作得太快了','errorCode'=>30001]);
    // 生成4位验证码
    $code = random_int(1000,9999);
    // 判断是否开启验证码功能
    if(!config('api.aliSMS.isopen')){
        Cache::set($phone,$code,config('api.aliSMS.expire'));
        throw new BaseException(['code'=>200,'msg'=>'验证码:'.$code,'errorCode'=>30005]);
    }
    // 发送验证码
    $res = AlismsController::SendSMS($phone,$code);
    //发送成功 写入缓存
    if($res['Code']=='OK') return Cache::set($phone,$code,config('api.aliSMS.expire'));
    // 无效号码
    if($res['Code']=='isv.MOBILE_NUMBER_ILLEGAL') throw new BaseException(['code'=>200,'msg'=>'无效号码','errorCode'=>30002]);
    // 触发日限制
    if($res['Code']=='isv.DAY_LIMIT_CONTROL') throw new BaseException(['code'=>200,'msg'=>'今日你已经发送超过限制,改日再来','errorCode'=>30003]);
    // 发送失败
    throw new BaseException(['code'=>200,'msg'=>'发送失败','errorCode'=>30004]);
}

config/api.php(自定义配置文件)

php
<?php

return [
    // token失效时间,0代表永不失效
    'token_expire'=>0,
    // 阿里大于
    'aliSMS'=>[
        'isopen'=> false,//开启阿里大于
        'accessKeyId'=>'<accessKeyId>',
        'accessSecret'=>'<accessSecret>',
        'regionId'=>'cn-hangzhou',
        'product'=>'Dysmsapi',
        'version'=>'2017-05-25',
        'SignName'=>'<YourSignName>',
        'TemplateCode'=>'<YourTemplateCode>',
        // 验证码发送时间间隔(60秒)
        'expire'=>60
    ]
];