使用redis模拟手机验证码发送,规定一个手机号一天只能请求三次验证码,且每次请求的验证码只有两分钟就会过期

1、首先写一个函数随机产生六位验证码,使用random函数

//随机生成六位验证码public static String getCode(){String code="";Random random = new Random();//随机函数生成验证码for (int i = 0; i < 6; i++) {code+= random.nextInt(10);}return code;}

2、写一个函数判断一个手机号一天验证码发送次数,流程如下:

①使用jedis连接redis,第一个参数为linux虚拟地址,第二个参数为redis默认端口号

②生成存储手机号发送次数,验证码对应的key

③判断该手机号一天发送验证码的次数,为空表明手机号未请求过,则将手机号次数存储进入,bi并设置过期时间为1天,若小于三次则自增

④存储验证码进redis,并设置过期时间为2分钟

//判断手机一天是否发送超过3次验证码public static Boolean Phone(String phone){//连接linux中的redisJedis jedis = new Jedis("192.168.12.188",6379);//生成手机存储的keyString phoneKey="Phone"+phone+"p";//生成存储验证码的keyString codeKey="Code"+phone+"c";//获取key为phoneKey的值String key = jedis.get(phoneKey);//判断redis中phoneKey值是否为空if (key==null){//为空存储phoneKey,并设置过期时间为1天,值为1,代表发送过一次jedis.setex(phoneKey,24*60*60,"1");}//若不为空,且发送次数小于3,phoneKey++else if (Integer.parseInt(key)<=2){jedis.incr(phoneKey);}//若发送超过三次,提示不能发送else {System.out.println("今天发送次数已经超过三次,不能再获取验证码");jedis.close();return false;}//获取验证码String code=getCode();//存储验证码jedis.setex(codeKey,120,code);jedis.close();return true;}

3、判断验证码是否正确

①通过手机号拼接字符串,获取验证码的key值

②验证验证码是否正确

//验证验证码是否正确public static Integer Code(String code,String phone){//连接jedisJedis jedis = new Jedis("192.168.23.129",6379);String codekey="Code"+phone+"c";String s = jedis.get(codekey);//判断验证码是否正确if (code.equals(s)){System.out.println("验证码正确");return 1;}else {System.out.println("验证码错误,请重新请求");return 0;}}

4、启动linux中redis服务端,找到redis.conf,启动执行下面命令即可启动

redis-server /opt/redis-6.2.1/redis.conf

5、执行函数

①输入手机号,并确认是否发送验证码

②调用判断手机号发送验证码次数函数,判断是否三次已经发完,若发完,直接退出

③输入验证码,调用验证验证码函数,若正确,直接退出程序

④若输入验证码失败,确认是否继续发送验证码

public static void main(String[] args) {//创建一个手机号String phone="";String tip="";Scanner scanner = new Scanner(System.in);System.out.print("请输入手机号:");phone=scanner.nextLine();System.out.print("是否获取验证码:(y/n)");tip=scanner.nextLine();if (tip.equals("y")){while (tip.equals("y")){//打印验证码到控制台Boolean p=Phone(phone);if (!p){//发送超过三次,退出whilebreak;}System.out.println(getCode());System.out.print("请输入验证码:");String code=scanner.nextLine();if (Code(code,phone).equals(1)){System.out.println("验证正确");break;}System.out.print("是否重新获取验证码:(y/n)");tip=scanner.nextLine();}}}

运行结果如下

Redis——模拟手机验证码发送相关推荐

  1. flask创建手机验证码发送逻辑

    flask创建手机验证码发送逻辑 同样的,回顾django中使用手机验证码的逻辑,大致可以分为几步 1.获取用户手机号码 2.校验手机号码 3.生成验证码 4.将验证码添加手机号查询方式添加到redi ...

  2. Redis实现手机验证码功能

    完成一个手机验证码功能 要求: 1.输入手机号,点击发送后随机生成6位数字码,2分钟有效 2.输入验证码,点击验证,返回成功或失败 3.每个手机号每天只能输入3次 流程分析 代码实现 public c ...

  3. redis缓存手机验证码案例

    一.发送验证码 二.验证码校验 验证码使用过后,立即删除. 三.案例源码 import redis.clients.jedis.Jedis;import java.util.Random;/*** @ ...

  4. html用接口实现手机验证码发送,编写程序软件怎样才能实现向手机号码发送验证码?需要调用哪些接口?...

    给你个思路: 其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口 发送手机验证码,要求具有如下功能需求.业务逻辑: (1).用户输入手机号,当输入的手机号码为空时,提示,并且要 ...

  5. python --- 短信接口开发手机验证码发送

    现在网络环境下,基本上任何网站注册都会验证手机号,已达到防止机器人注册的目的.除此之外短信群发,查询回复,找回密码等相关功能也需要短信验证码功能.那么网站的验证码发送是如何实现的呢?现在我们学习一下( ...

  6. 公众号 接收手机验证码发送给用户

    要实现将网站的验证码绑定到公众号上,可以按照以下步骤进行: 在公众号后台开发者中心中,配置好公众号的服务器地址和验证token. 在网站的验证码接口中,将验证码发送到公众号的服务器地址上,并将验证码内 ...

  7. springboot集成redis模拟手机发送验证码进行验证

    1.配置redis依赖 因为springboot框架帮们集成了大部分的依赖和它自动配置类的特点,我们只需要在maven中配置后就可以使用了,极大的挺高了我们开发的效率! <dependency& ...

  8. 登录注册时手机验证码发送的实现

    短信验证 首先需要通过个人账户获得 授权码(id.密码),再通过这些信息获得服务通过对阿里云网址 : https://www.aliyun.com/获得短信发送的权限(sms): 登录 / 注册 阿里 ...

  9. js模拟手机验证码倒计时

    <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8" ...

最新文章

  1. 广东java工资一般多少_广东java工资待遇,广东java工资一般多少,广东java工资底薪最低多少...
  2. 安装Oralce时,系统参数详解
  3. FFMPEG 日志输出控制
  4. 边缘计算大热 AI芯片站上风口
  5. 谁有正版的matlab,matlab正版
  6. Redis Windows环境安装
  7. include做配置文件
  8. 菜鸟学习笔记:Java提升篇10(网络2——UDP编程、TCPSocket通信、聊天室案例)
  9. python2.7安装
  10. knx智能照明控制系统电路图_智能照明控制系统(KNX)教材
  11. 制造中心量产推进计划
  12. 微软雅黑和consolas混合字体_未经授权使用“微软雅黑”,赔垮一家公司?方正辟谣了,但这事还是很危险...
  13. 分享40个主机域名PHP源码,总有一款适合你
  14. 如何选择一台适合个人使用的云服务器?
  15. EPUB电子书阅读与制作
  16. php团购实现,团购网站的设计与实现(PHP,MySQL)(含录像)
  17. 电子商务时代网络营销
  18. C 生化危机 SDUT
  19. 怎么退出自适应巡航_自适应巡航功能是何方神圣?“全速域自适应巡航”又有什么作用呢...
  20. 极简投资笔记-做一个富有的你自己

热门文章

  1. October 2006
  2. Android X86 解决ARM兼容的问题
  3. hpm1005能扫描不能打印_小米米家喷墨打印一体机体验:500元以内学生和职场人的实惠选择...
  4. 2020下半年中小学教资考试教育知识与能力试题(中学)——主观题
  5. 学习记录438@MySQL group by having 报错1054 - Unknown column ‘type’ in ‘having clause’
  6. 蒲公英 · JELLY技术周刊 Vol.12 尤雨溪新作 Vite, 你会支持么?
  7. Can not set java.util.Date field com.atguigu.qqzone.pojo.Topic.topicDate to null value
  8. 完全k叉树(CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) A)
  9. 七千字的线性回归模型指南,建议收藏!
  10. dwz使用mysql_Dwz_group