基于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 相关文章推荐
JS的IE和Firefox兼容性集锦
Dec 11 Javascript
JS网页播放声音实现代码兼容各种浏览器
Sep 22 Javascript
ext combobox动态加载数据库数据(附前后台)
Jun 17 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
js命名空间写法示例
Dec 18 Javascript
js制作网站首页图片轮播特效代码
Aug 30 Javascript
js实现的简练高效拖拽功能示例
Dec 21 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
Mar 12 Javascript
微信小程序使用canvas的画图操作示例
Jan 18 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
CodeIgniter php mvc框架 中国网站
2008/05/26 PHP
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
PHP基本语法总结
2014/09/06 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
浅析php原型模式
2014/11/25 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
IE与firefox之jquery用法区别
2008/10/03 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
2011/09/05 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
js获取form表单所有数据的简单方法
2016/08/18 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
[02:56]DOTA2上海特锦赛小组赛解说FreeAgain采访花絮
2016/02/27 DOTA
Python使用py2exe打包程序介绍
2014/11/20 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
利用python编写一个图片主色转换的脚本
2017/12/07 Python
python批量复制图片到另一个文件夹
2018/09/17 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
Python爬虫爬取煎蛋网图片代码实例
2019/12/16 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
亚洲最大的眼镜批发商和零售商之一:Glasseslit
2018/10/08 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
主持人婚宴答谢词
2014/01/28 职场文书
节能标语大全
2014/06/21 职场文书
行政复议决定书
2015/06/24 职场文书
Python之matplotlib绘制折线图
2022/04/13 Python
python中urllib包的网络请求教程
2022/04/19 Python