生成一万个不重复的六位验证码并写入数据库

背景

今天遇到一个接口,第三方网站需要我们提供一个授权接口,用户输入验证码后才能进行免费业务活动。为了不让用户重复分享验证码,需要在本地库里生成一万个验证码,进入第三方网站参与活动需要提供验证码(这个验证码会在用户关注公众号后自动回复给用户)

分析

本来想用户微信授权登录,但是第三方网站提出用这种验证码的格式;数据库就简单要三个字段:id自增,code六位数字,state默认为0,分配给用户后自动更新为1,用户验证后更新为2(主要是分配后的不再重复分配,验证过的不能再用)

生成验证码并写入数据库

   public function random(){
		//建一个10000到999999的数组
		$numbers = range (100000,999999);
		//shuffle 将数组顺序随即打乱 
		shuffle ($numbers); 
		//array_slice 取该数组中的某一段 
		$num=6000; 
		//取数组的前$NUM个做为新数组
		$result = array_slice($numbers,0,$num); 
		return $result;
	}
	
	public function daoru(){
		$ran = $this->random();
        //循环导入验证码到数据库
		foreach($ran as $k=>$v){
			$data['code'] = $v;
			M("random")->data($data)->add();
		}
		echo "导入成功";
	}

分配后验证接口

public function api(){
		$sec = I("post.sec",0,'intval');
		$tok = I("post.tok",0,'intval');
		if(intval($sec) == 654){
			$num = M("Random")->where(array('code'=>$tok,'state'=>1))->count();
			if($num == 1){
				//修改状态为2
				M("Random")->where('code='.$tok)->setInc('state',1);
				$da['code'] = 1;
				$da['msg'] = "授权成功";
			}else{
				$da['code'] = 0;
				$da['msg'] = "授权失败";
			}
		}else{
			$da['code'] = 0;
			$da['msg'] = "无权访问";
		}
		echo json_encode($da);
	}

搞定!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值