基于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 自定义CircleAnimation,Animate方法学习笔记
Jul 10 Javascript
jQuery 过滤not()与filter()实例代码
May 10 Javascript
推荐8款jQuery轻量级树形Tree插件
Nov 12 Javascript
跟我学习javascript的严格模式
Nov 16 Javascript
基于jQuery实现仿百度首页选项卡切换效果
May 29 Javascript
Vuejs在v-for中,利用index来对第一项添加class的方法
Mar 03 Javascript
详解js类型判断
May 22 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
利用Electron简单撸一个Markdown编辑器的方法
Jun 10 Javascript
js瀑布流布局的实现
Jun 28 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 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
极典R601SW收音机
2021/03/02 无线电
怎样在PHP中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
php实现解析xml并生成sql语句的方法
2018/02/03 PHP
完美解决JS中汉字显示乱码问题(已解决)
2006/12/27 Javascript
什么是JavaScript
2009/08/13 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
使用canvas实现仿新浪微博头像截取上传功能
2015/09/02 Javascript
H5移动端图片压缩上传开发流程
2016/11/09 Javascript
js仿新浪微博消息发布功能
2017/02/17 Javascript
ionic中的$ionicPlatform.ready事件中的通用设置
2017/06/11 Javascript
Angular排序实例详解
2017/06/28 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
关于vue面试题汇总
2018/03/20 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
JavaScript Dom实现轮播图原理和实例
2021/02/19 Javascript
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
2017/07/06 Python
Python日志模块logging基本用法分析
2018/08/23 Python
俄罗斯连接商品和买家的在线平台:goods.ru
2020/11/30 全球购物
Android面试宝典
2013/08/06 面试题
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
如何执行一个shell程序
2012/11/23 面试题
医院实习接收函
2014/01/12 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
2014年党建工作总结
2014/11/11 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
求职自我评价范文
2015/03/09 职场文书
结婚纪念日感言
2015/08/01 职场文书
班主任班级管理心得体会
2016/01/07 职场文书
分享一个vue实现的记事本功能案例
2022/04/11 Vue.js
Windows Server 2012 修改远程默认端口3389的方法
2022/04/28 Servers