发送手机短信验证码-后端、前端(验证码倒计时)
获取手机短信验证码-后端、前端(验证码倒计时)
后端
/*** 发送手机短信验证码** @return str* @throws Exception* @author 王永圣*/@RequestMapping(value = "/verifyCode")public @ResponseBody Map<String, Object> verifyCode(@RequestParam(value = "mobile") String mobile,HttpServletRequest request) {Map<String, Object> map = new HashMap<String, Object>();boolean smsSuccess = false;try {if (mobile == "") {map.put("message", "手机号码不能为空");map.put("result", "error");return map;}//短信验证码随机生成工具类:https://blog.csdn.net/yswknight/article/details/79867280String verifyCodeRandom = RandomCodeUtil.getRandomNumber(6);//判断发送次数是否超过最大短信发送次数Object currentTimes = request.getSession().getAttribute("corMobileTimes" + mobile);if (currentTimes != null) {int times = NumberUtil.getInt(currentTimes);if (times > 5) {map.put("message", "超过最大短信发送次数");map.put("result", "error");return map;}}String msg = "【网站名称】您的短信验证码是【" + verifyCodeRandom + "】。您正在进行注册用户验证操作,如非本人操作,请忽略该短信。";//调用发送短信接口smsSuccess = SmsUtils.SmsTest(mobile, msg);System.out.println(msg);if (smsSuccess) {map.put("result", "success");} else {map.put("result", "error");}} catch (Exception e) {e.printStackTrace();}return map;}
前端
html代码
<tr><td align="right" width="235px">手机验证码:</td><td><input id="smsCode" name="smsCode" type="text" /></td><td><input type="button" id="sendSms" class="btn btn-primary" value="获取短信验证码" onclick="sendValidateCode(this)" /></td>
</tr>
js代码
/*** 发送短信验证码*/function sendValidateCode(obj){var mobileReg = /^1[3|4|5|6|7|8|9][0-9]\d{8}$/var countdown = 60, timerTag;var mobile=$("#mobile").val().trim();if(mobile != ""){var mobileResult = mobileReg.test(mobile);if(mobileResult){$.ajax({url: "verifyCode",type: "post",dataType: "json",async:false,data: {mobile:mobile},beforeSend: function (){$("#sendSms").attr("disabled","disabled");$(obj).css("background-color","#999");},success: function (data) {if(data.result=="success"){alert("验证码发送成功,请注意查收!")setTime(obj,countdown,timerTag);}else{countdown = -1;}},complete: function () {$("#sendSms").removeAttr("disabled");},});}else{alert("请输入正确的手机号!");}}else{alert("手机号不能为空,请重新输入");}}/*** 短信验证码计数*/function setTime(obj,countdown,timerTag) {if (countdown <= 0) {$(obj).removeAttr("disabled").css("background-color","rgb(24, 197, 133)");$("#sendSms").attr("onclick","sendValidateCode(this)");
// $(obj).html("重新发送");$("#sendSms").val("点击重新获取验证码").removeAttr("disabled").removeClass("disabled");countdown = 60;clearTimeout(timerTag);} else {$("#sendSms").attr("disabled", true);//点击了"发送"按钮后,点击失效。$("#sendSms").addClass("disabled");//置灰
// $(obj).html("重新发送(" + countdown + ")");$("#sendSms").attr("value","" + countdown + "秒后重新获取验证码");countdown--;timerTag = setTimeout(function() {setTime(obj,countdown,timerTag);}, 1000);}}
发送手机短信验证码-后端、前端(验证码倒计时)相关推荐
- 【微信小程序 - 工作实战分享】1.微信小程序发送手机短信验证码(阿里云)
发送手机短信验证码 前言 一. 准备工作 二. 配置 三. 实战代码(仅仅是后台代码,前端传入手机号) 总结 前言 在网站和移动应用中利用短信验证码进行信息确认是最常用的验证手段.随着短信验证码的技术 ...
- java语音验证码_Java实现发送手机短信语音验证功能代码实例
这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证 ...
- java实现语音发送,Java实现发送手机短信语音验证功能代码实例
这篇文章主要介绍了java实现发送手机短信语音验证功能代码实例,www.cppcns.com文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方 ...
- java发送手机短信demo
JAVA发送手机短信有几种方法: (1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册;(2)使用短信mao的方式进行短信的发送,这 ...
- java 实现语音报警代码_Java实现发送手机短信语音验证功能代码实例
这篇文章主要介绍了Java实现发送手机短信语音验证功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 利用第三方平台可以实现发送手机短信验证 ...
- Java实现的一个发送手机短信(亲测可用)
原文地址:http://sms.webchinese.cn/api.shtml JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webs ...
- Java 后台实现 发送手机短信的功能(中国网建)
Java 后台实现 发送手机短信的功能(中国网建) 效果截图: 一.准备阶段 (1)准备第三方平台: 发送短信肯定是需要第三方平台,并且是收费的. 本篇以[中国网建]提供的 SMS 短信平台实现,该平 ...
- chatgpt赋能python:Python如何发送手机短信:实现方法解析和应用场景介绍
Python如何发送手机短信:实现方法解析和应用场景介绍 随着移动 App 的兴起,手机短信已成为现代人日常生活中不可或缺的一部分.在有些场景下需要编写 Python 程序去自动化发送短信,例如企业营 ...
- 为 Asp.net 网站新增发送手机短信功能
本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考. 适合人群 须满足一下条件之一,如果以下3个条件您都不满足,为节约您宝贵的时间,请终止阅读本篇文章. 条件如下: ...
最新文章
- Javascript 检查一组 radio 中的哪一个被勾选
- 成功解决pyinstaller打包scipy是报模块dll缺失和failed to import any qt binding的问题
- 【NLP】5 分钟理解百度 ERNIE 核心思想
- VS2017 下载离线MSDN文档
- gif提取 python_编写Python爬虫抓取暴走漫画上gif图片的实例分享
- java arraylist_死磕 java集合之ArrayList源码分析
- sql mysql assoc和row_mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
- python机器学习库sklearn——K最近邻、K最近邻分类、K最近邻回归
- 发布Android开源库,看这个文章就够了!
- SuperPoint学习(一)
- 【配送路径规划】基于matlab遗传算法求解带时间窗的多配送中心半开放式车辆路径规划问题【含Matlab源码 YC002期】
- ARINC429硬件层初探
- ubuntu20.04 安装Dukto
- python def是什么意思-python里面def是什么意思
- 功率放大电路工作状态
- 用户/账户/账号的理解
- Cocos Creator 入门笔记
- APM的3DR无线数传的安装和调试
- 服务器端安装conda | 配置conda环境
- 前景广阔的技术---云计算