发送短信验证后,按钮倒计时,防止刷新倒计时失效
来源:互联网 发布:阿里云ecs ftp连不上 编辑:程序博客网 时间:2024/06/05 03:36
应用场景
在开发“发送短信验证”功能时候,要解决一个问题,防止恶意或频繁发送短信验证码问题。一般原理是“当点击发送按钮时,发送ajax请求到服务器发送短信验证码,成功则把发送按钮设置为不可点击,并且调用定时器,按钮显示倒计时”。如果就这样不对倒计时存储做处理,那么当刷新页面,会出现倒计时失效,按钮可点击。提供以下解决方案:
利用cookie存储倒计时
利用HTML5的localStorage 存储倒计时
利用cookie存储倒计时
发送成功后把剩余倒计时存储到cookie,当页面刷新时,检查cookie 是否还存储着剩余倒计时?,如果有,发送按钮则保持倒计时状态,不可点击,否则发送按钮可点击。
HTML代码
<input type="button" id="btn" disabled="disabled" value="获取验证码">
JQuery代码
<!--引入jquery.cookie.js 插件--><script src="http:jquery.cookie.js" type="text/javascript" charset="utf-8"></script><!--逻辑功能代码 --><script> $(function(){ if($.cookie("total")!=undefined&&$.cookie("total")!='NaN'&&$.cookie("total")!='null'){//cookie存在倒计时 timekeeping(); }else{//cookie 没有倒计时 $('#btn').attr("disabled", false); } function timekeeping(){ //把按钮设置为不可以点击 $('#btn').attr("disabled", true); var interval=setInterval(function(){//每秒读取一次cookie //从cookie 中读取剩余倒计时 total=$.cookie("total"); //在发送按钮显示剩余倒计时 $('#btn').val('请等待'+total+'秒'); //把剩余总倒计时减掉1 total--; if(total==0){//剩余倒计时为零,则显示 重新发送,可点击 //清除定时器 clearInterval(interval); //删除cookie total=$.cookie("total",total, { expires: -1 }); //显示重新发送 $('#btn').val('重新发送'); //把发送按钮设置为可点击 $('#btn').attr("disabled", false); }else{//剩余倒计时不为零 //重新写入总倒计时 $.cookie("total",total); } },1000); } //绑定发送按钮 $('#btn').click(function(event) { /* Act on the event */ // alert($("#btn").val()); //校验手机号码 var phone=$('#phone').val(); var pre=/^[1][358][0-9]{9}$/; if(phone==''){ layer.open({ content: '手机号码不能为空', time: 2 }); return this; }else{ var pre=/^[1][358][0-9]{9}$/; if(!pre.test(phone)){ layer.open({ content: '手机号码格式有误!', time: 2 }); return this; } } $.ajax({ url: '',//服务器发送短信 type: 'GET', dataType: 'json', data: {phone: phone}, }) .done(function(re) { var str="发送短信验证码成功,请注意查看您的手机"; // console.log(re); if(re){ $.cookie("total",60); timekeeping(); }else{ switch (re[0]) { case '160038': str="短信验证码发送过频繁"; break; case '160034': str="号码黑名单"; break; case '160000': str="系统错误"; break; case '000000': str="发送成功"; break; case '112300': str="接收短信的手机号码为空"; break; case '160040': str="验证码超出发送上限"; break; case '160042': str="号码格式有误"; break; default: str="发送验证码失败"; break; } } layer.open({ content: str, time: 2 }); }) .fail(function() { console.log("error"); }) .always(function() { console.log("complete"); }); }); })</script>
阅读全文
0 0
- 发送短信验证后,按钮倒计时,防止刷新倒计时失效
- 点击发送短信验证码按钮后,倒计时60秒
- iOS发送短信后验证码倒计时
- js实现发送短信验证码后的倒计时功能(无视页面刷新)
- js实现发送短信验证码后的倒计时功能(无视页面刷新)
- js实现发送短信验证码后的倒计时功能(无视页面刷新)
- js实现发送短信验证码后60秒倒计时
- 实现发送短信验证码后60秒倒计时
- jQuery实现发送短信验证码后60秒倒计时
- 发送验证码后倒计时
- 模拟 短信验证码 按钮倒计时
- 短信验证码按钮60秒倒计时
- 短信发送倒计时(以及正则验证)
- 短信验证码---重新发送倒计时
- jquery 倒计时发送短信验证码效果
- 前端模拟发送短信验证倒计时
- 短信验证码获取后的倒计时
- js倒计时发送验证码按钮
- jQuery validator简单自定义校验
- 结束进程
- mysql 定期删除表中无用数据
- TM1620中显存地址是偶数
- LaTeX新人教程,30分钟从完全陌生到基本入门
- 发送短信验证后,按钮倒计时,防止刷新倒计时失效
- Codeforces 819 C. Mister B and Beacons on Field 容斥 数学
- Windows下特权获取
- windows7常用快捷键
- Windows server 2008 基础知识
- 小程序报错信息合集
- 微秒级延时
- 李航统计学习方法:第一章
- java二叉树的遍历