短信验证码实现(转)

简介: 我们在使用移动、电信等运营商网上营业厅的时候,为确保业务的完整和正确性,经常会需要用到短信的验证码。最近因为某省业务需要,也做了个类似的功能。 原理很简单,就是在用户点击"获取验证码"的时候,Ajax获取一串固定位数的数字,然后写数据库发短信,写Cookie设置验证码的有效期。

  我们在使用移动、电信等运营商网上营业厅的时候,为确保业务的完整和正确性,经常会需要用到短信的验证码。最近因为某省业务需要,也做了个类似的功能。
原理很简单,就是在用户点击"获取验证码"的时候,Ajax获取一串固定位数的数字,然后写数据库发短信,写Cookie设置验证码的有效期。
JS请求验证码如下:

复制代码
$.ajax({
type: "GET",
url: "../Ajax/smsrandcodetest.ashx?phone=" + phone.val() + "&smsCodeRand=" + num,
success: function(result) {
if (result == "Y") {
alert("验证码已发送至您输入的手机号!有效期5分钟");
RemainTime();
}
else {
alert("验证码获取失败!请重新获取");
}
},
error: function() { alert("error"); }
});

//获取6位随机验证码
function random() {
var num = "";
for (i = 0; i < 6; i++) {
num = num + Math.floor(Math.random() * 10);
}
return num;
}
//验证码有效期倒计时
function RemainTime() {
var iSecond;
var sSecond = "", sTime = "";
if (iTime >= 0) {
iSecond = parseInt(iTime % 300);
if (iSecond >= 0) {
sSecond = iTime + "秒";
}
sTime = "<span style='color:darkorange;font-size:13px;'>" + sSecond + "</span>";
if (iTime == 0) {
clearTimeout(Account);
sTime = "<span style='color:red;font-size:12px;'>验证码已过期</span>";
}
else {
Account = setTimeout("RemainTime()", 1000);
}
iTime = iTime - 1;
}
$("#endtime").html(sTime);
}
复制代码

前端要处理的工作基本如上,现在要在HttpHandler中添加逻辑了,为了防止Js生成的验证码不符规则,我们在后端重新生成一次:

复制代码
if (smscoderand.Length != 6) //如果JS生成的随机码不符,则用C#生成随机码
{
smscoderand = GetRandom();
}
//写短信数据,发SMS
//写Cookie,设置验证码有效期,比如5分钟
//注:如果以上都处理成功,返回"Y",处理失败,返回"N"
复制代码

这里为了方便,验证码的有效期验证就用Cookie来完成。在业务提交的时候,会获取客户端的这个Cookie,看是否存在,如果不存在肯定就是过期了。如果后续业务扩展可能会考虑加上数据库的有效期验证,以及一些其它的规则,比如一小时、一天内限制发送验证码的条数(总不能让你无限制的发送短信吧) 等等。

http://www.cnblogs.com/maoniu602/archive/2011/12/26/2302472.html

 

相关文章
|
小程序 Java API
认证服务:整合短信验证码
认证服务:整合短信验证码
|
SQL Java
如何使用阿里云短信服务实现登录页面,手机验证码登录?1
如何使用阿里云短信服务实现登录页面,手机验证码登录?
347 0
|
20天前
|
NoSQL Java Redis
认证服务---整合短信验证码,验证码倒计时,验证码防刷校验 【一】
这篇文章介绍了如何在分布式微服务项目中整合短信验证码服务,包括使用阿里云短信验证接口、将短信验证功能集成到第三方服务中、其他服务的远程调用,以及通过Redis实现验证码防刷机制的代码实现和遇到的问题解决方案。
|
机器人 PHP 开发工具
防止短信轰炸,行为验证码是关键!
忘记传统的验证码输入方式吧!创新的文字点选验证码,让你通过选择正确的文字来验证你的人类身份。这种方式不仅更加便捷,还能有效防止机器人攻击。体验文字点选验证码的魅力!
|
12月前
|
数据安全/隐私保护 Python
邮箱验证
邮箱验证
|
消息中间件 安全 Java
阿里云 短信服务——发送短信验证码图文教程
阿里云 短信服务——发送短信验证码图文教程
3807 2
|
JavaScript 前端开发
如何使用阿里云短信服务实现登录页面,手机验证码登录?2
如何使用阿里云短信服务实现登录页面,手机验证码登录?
233 0
|
C# 开发工具
C#短信验证码
这篇文章主要为大家详细介绍C#发送短信接入验证码的实现流程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C#短信验证码
|
Java 云计算
JAVA实现《阿里云发送短信验证码以及短信通知》
JAVA实现《阿里云发送短信验证码以及短信通知》
920 0
|
运维 安全 JavaScript
阿里云国际版短信验证码定制
阿里云国际版短信验证码定制怎么做?sanniuge来带您了解一下。