基于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 相关文章推荐
JQuery+DIV自定义滚动条样式的具体实现
Jun 25 Javascript
javascript中cookie对象用法实例分析
Jan 30 Javascript
jquery控制表单输入框显示默认值的方法
May 22 Javascript
在Node.js应用中读写Redis数据库的简单方法
Jun 30 Javascript
第四章之BootStrap表单与图片
Apr 25 Javascript
Boostrap入门准备之border box
May 09 Javascript
Vuejs第一篇之入门教程详解(单向绑定、双向绑定、列表渲染、响应函数)
Sep 09 Javascript
Angular2中Bootstrap界面库ng-bootstrap详解
Oct 18 Javascript
基于ajax与msmq技术的消息推送功能实现代码
Dec 26 Javascript
JS实现仿百度文库评分功能
Jan 12 Javascript
详解Vue 实例中的生命周期钩子
Mar 21 Javascript
Angular中响应式表单的三种更新值方法详析
Aug 22 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版(1)
2006/10/09 PHP
PHP 加密与解密的斗争
2009/04/17 PHP
PHP十六进制颜色随机生成器功能示例
2017/07/24 PHP
PHP连接MySQL数据库三种实现方法
2020/12/10 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
2015/11/25 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
2016/06/26 Javascript
Node.js检测端口(port)是否被占用的简单示例
2016/09/29 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
用jQuery实现圆点图片轮播效果
2017/03/19 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
jQuery实现全选、反选和不选功能的方法详解
2019/12/04 jQuery
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python科学计算包numpy用法实例详解
2018/02/08 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
Python多线程原理与用法详解
2018/08/20 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
阿波罗盒子:Apollo Box
2017/08/14 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
爱国卫生月实施方案
2014/02/21 职场文书
人力资源管理专业求职信
2014/07/23 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
2014年银行年终工作总结
2014/12/19 职场文书
国庆庆典邀请函
2015/02/02 职场文书
教师个人自我评价
2015/03/04 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
asyncio异步编程之Task对象详解
2022/03/13 Python
python实现学员管理系统(面向对象版)
2022/06/05 Python