<div class="form-group has-feedback"> <input type="tel" class="form-control" id="phone" placeholder="请输入手机号" maxlength=11> <span class="glyphicon glyphicon-earphone form-control-feedback"></span> </div> <div class="row"> <div class="col-xs-6 pull_left"> <div class="form-group"> <input class="form-control" id="msg_num" placeholder="请输入验证码"> </div> </div> <div class="col-xs-6 pull_center"> <div class="form-group"> <input type="button" class="btn btn-block btn-flat" id="verify_refresh" onclick="getMsgNum(this)" value="免费获取验证码"> </div> </div> </div> <div class="col-xs-12 pull_center"> <button type="button" class="btn btn-block btn-flat" onclick="validateNum()">验证</button> </div>
var messageData;
var wait = 120; // 短信验证码120秒后才可获取下一个
/**
* 获取验证码
* @param that
*/
function getMsgNum(that) {
var phoneNumber = $('#phone').val();
setButtonStatus(that); // 设置按钮倒计时
var obj = {
phoneNumber: phoneNumber
};
$.ajax({
url: httpurl + '/sendMsg', // 后台短信发送接口
type: 'POST',
dataType: 'json',
contentType: "application/json",
async: false, //false 同步
data: JSON.stringify(obj),
xhrFields: {
withCredentials: true
},
success: function (result) {
if(result.code == '200') {
messageData = result.data;
}else {
alert("错误码:" + data.code + " 错误信息:" + data.message);
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
}
/**
* 设置按钮状态
*/
function setButtonStatus(that) {
if (wait == 0) {
that.removeAttribute("disabled");
that.value="免费获取验证码";
wait = 60;
} else {
that.setAttribute("disabled", true);
that.value=wait+"秒后可以重新发送";
wait--;
setTimeout(function() {
setButtonStatus(that)
}, 1000)
}
}
/**
* 注册按钮
*/
function validateNum() {
var data = {
msgNum: inputMsgNum,
tamp: messageData.tamp,
hash: messageData.hash
};
$.ajax({
url: httpurl + '/validateNum', // 验证接口
type: 'POST',
dataType: 'json',
contentType: "application/json",
data: JSON.stringify(data),
async: false, //false 同步
success: function (data) {
//业务处理
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
}
private static final String KEY = "abc123"; // KEY为自定义秘钥
@RequestMapping(value = "/sendMsg", method = RequestMethod.POST, headers = "Accept=application/json")
public Map<String, Object> sendMsg(@RequestBody Map<String,Object> requestMap) {
String phoneNumber = requestMap.get("phoneNumber").toString();
String randomNum = CommonUtils.createRandomNum(6);// 生成随机数
SimpleDateFormat sf = new SimpleDateFormat("yyyyMMddHHmmss");
Calendar c = Calendar.getInstance();
c.add(Calendar.MINUTE, 5);
String currentTime = sf.format(c.getTime());// 生成5分钟后时间,用户校验是否过期
sengMsg(); //此处执行发送短信验证码方法
String hash = MD5Utils.getMD5Code(KEY + "@" + currentTime + "@" + randomNum);//生成MD5值
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("hash", hash);
resultMap.put("tamp", currentTime);
return resultMap; //将hash值和tamp时间返回给前端
}
@RequestMapping(value = "/validateNum", method = RequestMethod.POST, headers = "Accept=application/json")
public Map<String, Object> validateNum(@RequestBody Map<String,Object> requestMap) {
String requestHash = requestMap.get("hash").toString();
String tamp = requestMap.get("tamp").toString();
String msgNum = requestMap.get("msgNum").toString();
String hash = MD5Utils.getMD5Code(KEY + "@" + tamp + "@" + msgNum);
if (tamp.compareTo(currentTime) > 0) {
if (hash.equalsIgnoreCase(requestHash)){
//校验成功
}else {
//验证码不正确,校验失败
}
} else {
// 超时
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有