基于JavaScript短信验证码如何实现


Posted in Javascript onJanuary 24, 2016

我们在使用移动、电信等运营商网上营业厅的时候,为确保业务的完整和正确性,经常会需要用到短信的验证码。最近因为某省业务需要,也做了个类似的功能。

原理很简单,就是在用户点击"获取验证码"的时候,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,看是否存在,如果不存在肯定就是过期了。如果后续业务扩展可能会考虑加上数据库的有效期验证,以及一些其它的规则,比如一小时、一天内限制发送验证码的条数(总不能让你无限制的发送短信吧) 等等。

以上所述是针对JavaScript短信验证码如何实现的详细介绍,希望对大家有所帮助。

Javascript 相关文章推荐
克隆javascript对象的三个方法小结
Jan 12 Javascript
Jquery index()方法 获取相应元素索引值
Oct 12 Javascript
js操作输入框中选择内容兼容IE及其他主流浏览器
Apr 22 Javascript
JavaScript toUpperCase()方法使用详解
Aug 26 Javascript
node.js连接MongoDB数据库的2种方法教程
May 17 Javascript
JS判断微信扫码的方法
Aug 07 Javascript
vue 实现 ios 原生picker 效果及实现思路解析
Dec 06 Javascript
vue双向绑定及观察者模式详解
Mar 19 Javascript
java实现单链表增删改查的实例代码详解
Aug 30 Javascript
Node.js系列之连接DB的方法(3)
Aug 30 Javascript
vue实现浏览器全屏展示功能
Nov 27 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
May 13 Javascript
详解JS面向对象编程
Jan 24 #Javascript
js中实现字符串和数组的相互转化详解
Jan 24 #Javascript
JavaScript基础知识之方法汇总结
Jan 24 #Javascript
Javascript实现单例模式
Jan 24 #Javascript
原生JavaScript实现滚动条效果
Mar 24 #Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 #Javascript
jQuery Form 表单提交插件之formSerialize,fieldSerialize,fieldValue,resetForm,clearForm,clearFields的应用
Jan 23 #Javascript
You might like
PHP读取xml方法介绍
2013/01/12 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
Yii2框架使用计划任务的方法
2016/05/25 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
jQuery解决iframe高度自适应代码
2009/12/20 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
ff chrome和ie下全局动态定位的异同及全局高度的取法
2014/06/30 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
javascript计时器详解
2015/02/28 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jQuery实现按钮点击遮罩加载及处理完后恢复的效果
2016/06/07 Javascript
把多个JavaScript函数绑定到onload事件处理函数上的方法
2016/09/04 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
2016/10/25 Javascript
详解angular2.x创建项目入门指令
2018/10/11 Javascript
JavaScript的级联函数用法简单示例【链式调用】
2019/03/26 Javascript
vue实现输入框的模糊查询的示例代码(节流函数的应用场景)
2019/09/01 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
解决VueCil代理本地proxytable无效报错404的问题
2020/11/07 Javascript
Python对文件操作知识汇总
2016/05/15 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
Python 线性回归分析以及评价指标详解
2020/04/02 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
四年的个人工作自我评价
2013/12/10 职场文书
安全标语大全
2014/06/10 职场文书
群教个人对照检查材料
2014/08/20 职场文书
2015年领导班子工作总结
2015/05/23 职场文书
心得体会格式及范文
2016/01/25 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
Python基本的内置数据类型及使用方法
2022/04/13 Python