基于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基础资料整理3 正则
Dec 06 Javascript
jquery.post用法之type设置问题
Feb 24 Javascript
jQuery实现Tab菜单滚动切换的方法
Sep 21 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
JavaScript实现事件的中断传播和行为阻止方法示例
Jan 20 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
在Vue项目中引入腾讯验证码服务的教程
Apr 03 Javascript
vue如何在自定义组件中使用v-model
May 14 Javascript
PHP读取远程txt文档到数组并实现遍历
Aug 25 Javascript
Vue实现简单计算器
Jan 20 Vue.js
详解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 Mysql类 可以参考学习熟悉下
2009/06/21 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
Javascript实现页面跳转的几种方式分享
2013/10/26 Javascript
SinaEditor使用方法详解
2013/12/28 Javascript
jquery ajax跨域解决方法(json方式)
2014/02/04 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
js实现双人五子棋小游戏
2020/05/28 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
2016/12/27 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Jupyter安装nbextensions,启动提示没有nbextensions库
2020/04/23 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
Python计算IV值的示例讲解
2020/02/28 Python
Python yield的用法实例分析
2020/03/06 Python
《三顾茅庐》教学反思
2014/04/10 职场文书
任命书怎么写
2014/06/04 职场文书
《正比例》教学反思
2016/02/23 职场文书
小学思想品德教学反思
2016/02/24 职场文书
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript