php下发短信验证码60秒简单验证

下发短信验证码,除了注册就是验证手机号

简单实现原理就是

用手机号和一个键作为key存到缓存里,

用户请求的时候,验证这个手机号是不是已经申请过key*(即已手机号为缓存的key有没有,)如果有,并且当前时间与当时请求时间在60秒之内,那就不要在请求发送短信接口了。

另外,如果发送成功了,要设置一个验证码的时间有效期,一般10分钟。

然后在去对应的找回密码或者是注册中调用一下这个对应的memkey就可以。

下发代码如下。

if(is_numeric($mobile) && strlen($mobile)==11){
			
			$sendtimekey = "Sendsmscode_mobile_sendtime_".$mobile;
			
			$lastsendtime = (int) Mem($sendtimekey);
			
			$now = time();
			
			if($now - $lastsendtime < 60){
				
				Error('请勿频繁下发验证码,两次验证码发送时间不能小于60秒!',-2003);
				
			}
			
			switch($action){
				
				case 'register':
				
					$this->checkRegister($mobile,$type) === true  ? Error('您的手机号码注册过,请勿重复注册,谢谢!',-2001) : null;
				
				break;
				
				case 'findpassword':
				
					$this->checkRegister($mobile,$type) === false  ? Error('您的手机号码尚未注册过!',-2002) : null;
				
				break;
								
				default:
				
				break;
			}
			
			$code = rand(1111,9999);
			$content = "验证码:$code (任何索取行为均为诈骗),10分钟之内有效,请确保仅在登录时亲自填入,不告知他人。";
			$data = sendsms($mobile,$content);

			if($data!==false){

				$key = "Sendsmscode_mobile_".$mobile;
				Mem($key,$code,600);	//缓存10分钟
				Mem($sendtimekey,$now,60);
//                Success('短信验证码下发成功!短信验证码是 '.$code,1001);
                Success('短信验证码下发成功!',1001);

			}else{
				
				Error('短信下发失败!',-2001);
				
			}
			
		
		}
找回代码如下

			$key = "Sendsmscode_mobile_".$mobile;
				
			$mobilevercode = Mem($key);
			
			if(empty($mobilevercode) || ($mobilevercode!=$vercode)){
				
				Error('手机号或验证码错误!',-2003);
				



你可能感兴趣的:(php)