发送验证码思路

时间:2022-12-30 19:15:22

验证码,一分钟内不要重复发送。
发送的验证码时效性为5分钟。

将数据存入Redis中。
存两个,一个是时间,一个是验证码。

$sms_code_key = 'women:code:'.$_POST['telphone']; // 5分钟有效
$sms_time_key = 'women:time:'.$_POST['telphone']; // 1分钟之内不可发送

判断redis中是否已经存在时间key,存在则提示请一分钟之后再试。

$time_key_data = $redis->get($sms_time_key);
if ($time_key_data) {
    $this->json->setErr(10004, '已发送,请1分钟之后再试');
    $this->json->Send();
}

如果没有,则发送验证码,并将code存入redis。

// 发送
vendor('Func.Sms');
$code = $this->code();
$status = Sms::send($code, $_POST['telphone']);

if (!$status) {
    $this->json->setErr(10005, '发送验证码失败');
    $this->json->Send();
} else {
    // 存入redis,时间,code都存
    $redis->set($sms_code_key,$code,300); // 5分钟有效
    $redis->set($sms_time_key,date('Y-m-d H:i:s'),60); // 1分钟之内不可发送

    $this->json->setErr(0, '发送成功');
    $this->json->Send();
}

大致就是这样的思路,Redis很好用。