基于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和DOM Interfaces来处理HTML
Oct 09 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
Feb 04 Javascript
window.print打印指定div指定网页指定区域的方法
Aug 04 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 Javascript
Vue.js Ajax动态参数与列表显示实现方法
Oct 20 Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
May 17 Javascript
JavaScript ES6常用基础知识总结
Feb 09 Javascript
浅谈vue在html中出现{{}}的原因及解决方式
Nov 16 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并发访问实例代码
2012/09/06 PHP
PHP实现采集中国天气网未来7天天气
2014/10/15 PHP
php如何获取文件的扩展名
2015/10/28 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
Jquery Change与bind事件代码
2011/09/29 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
JS模拟自动点击的简单实例
2013/08/08 Javascript
HTML5之WebSocket入门3 -通信模型socket.io
2015/08/21 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
React-Native实现ListView组件之上拉刷新实例(iOS和Android通用)
2017/07/11 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
2019/11/01 Javascript
JS实现音乐导航特效
2020/01/06 Javascript
JS实现横向轮播图(初级版)
2020/06/24 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
vue mvvm数据响应实现
2020/11/11 Javascript
python 实现归并排序算法
2012/06/05 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python3+mysql查询数据并通过邮件群发excel附件
2018/02/24 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
《和我们一样享受春天》教学反思
2014/02/07 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
环保倡议书
2014/04/14 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
eclipse创建项目没有dynamic web的解决方法
2021/06/24 Java/Android
OpenCV实现反阈值二值化
2021/11/17 Java/Android