关于网友提出的“ 短信验证码的失效时间”问题疑问,本网通过在网上对“ 短信验证码的失效时间”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 短信验证码的失效时间
描述:怎么给短信验证码设置失效时间呢?除了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()