基于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对象是否可用的最正确方法分析
Oct 03 Javascript
js 对联广告、漂浮广告封装类(IE,FF,Opera,Safari,Chrome
Nov 26 Javascript
在javascript中关于节点内容加强
Apr 11 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
Sep 06 Javascript
原生Js实现简易烟花爆炸效果的方法
Mar 20 Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 Javascript
Jquery删除css属性的简单方法
Dec 04 Javascript
JS匹配日期和时间的正则表达式示例
May 12 Javascript
微信浏览器禁止页面下拉查看网址实例详解
Jun 28 Javascript
vue 过滤器filter实例详解
Mar 14 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 Javascript
uniapp开发小程序的经验总结
Apr 08 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
第八节 访问方式 [8]
2006/10/09 PHP
PHP乱码问题,UTF-8乱码常见问题小结
2012/04/09 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
HTML页面如何象ASP一样接受参数
2007/02/07 Javascript
csdn 博客的css样式 v3
2009/02/24 Javascript
Js 随机数产生6位数字
2010/05/13 Javascript
ExtJS DOM元素操作经验分享
2013/08/28 Javascript
JavaScript中的数据类型转换方法小结
2015/10/26 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
JavaScript获取IP获取的是IPV6 如何校验
2016/06/12 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
vue 2.0路由之路由嵌套示例详解
2017/05/08 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
[40:57]TI4 循环赛第二日 iG vs EG
2014/07/11 DOTA
django 多数据库配置教程
2018/05/30 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
python解释器spython使用及原理解析
2019/08/24 Python
对python中的装包与解包实例详解
2019/08/24 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
python ftplib模块使用代码实例
2019/12/31 Python
Python函数基本使用原理详解
2020/03/19 Python
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
Ruby如何进行文件操作
2014/07/17 面试题
外贸公司实习自我鉴定
2013/09/24 职场文书
《最大的麦穗》教学反思
2014/04/17 职场文书
先进单位申报材料
2014/12/25 职场文书
早上好问候语大全
2015/11/10 职场文书
奖学金申请书(范文)
2019/08/14 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
Java基于Dijkstra算法实现校园导游程序
2022/03/17 Java/Android
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python
服务器nginx权限被拒绝解决案例
2022/09/23 Servers