您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> PHP >> 短信验证码的失效时间

短信验证码的失效时间(1/2)

来源:网络整理     时间:2018/1/25 12:04:57     关键词:

关于网友提出的“ 短信验证码的失效时间”问题疑问,本网通过在网上对“ 短信验证码的失效时间”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 短信验证码的失效时间
描述:

怎么给短信验证码设置失效时间呢?除了session,请各位大神给点建议


解决方案1:

在生成验证码的时候不是会往数据库插一条记录吗,同时会记录时间,在验证验证码的时候判断当前手机,验证码的这条记录的时间是否过期就可以了,使用 mysql ,redis 都可以

解决方案2:

这里使用的是TP5框架 代码参考一下

/**
 * 发送验证码
 */
public function sendSmsCode() {
    // 获取手机号
    $phone = input ('phone',0);
    // DO:判断手机号是否注册 调用验证器
    $count = \app\common\model\Users::where(['phone'=>$phone])->count ();
    if ($count > 0 ) return json (['code' => 200, 'msg' => '手机号已存在', 'data' => json([])]);

    // 判断是否有验证码 处在 60秒内有效期
    if (Cache::has ('reg_sms_code:'.$phone)) {
        $old_cache_data = cache ('reg_sms_code:'.$phone);
        $last_time = $old_cache_data['send_time'];
        if ($last_time + 60 > time ()) {
            return json (['code' => 200, 'msg' => '请等60秒后,再次发送验证码', 'data' => json([])]);
        }
    }
    // 正则匹配长度
    $preg_str = "/^1\d{10}$/";
    $str = preg_match($preg_str, $phone);
    //判断是否正则通过
    if ($str == 0) {
        return json(['code' => 200, 'msg' => '手机号码格式错误 :' . $phone, 'data' => json([])]);
    }

    // 将验证码记录入缓存
    $code = mt_rand (100000,999999);
    $expire_time = time () + 300;
    $cache_data = [
        'phone' => $phone,
        'code' => $code,
        'expire_time' =>$expire_time, #过期时间
        'send_time' => time () #发送时间
    ];

    // DO:发送验证码
    Loader::import('alisms\Alisms', EXTEND_PATH);
    AliSms::sendSms($phone,$code);
    // 将验证码信息加入缓存
    cache ('reg_sms_code:'.$phone,$cache_data,300);

    return json (['code' => 200, 'msg' => '验证码发送成功','data' => json([])]);

}
解决方案3:

Do my Assignment more often than not have a great deal of rules and such, meaning that your professor is hoping to see something very particular. This makes the activity of a writer writing an assignment for you much harder.

解决方案4:

我司是使用redis::set()

相关图片

相关文章