基于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延迟执行实现方法(setTimeout)
Dec 30 Javascript
JavaScript学习笔记记录我的旅程
May 23 Javascript
js加强的经典分页实例
Mar 15 Javascript
js中的this关键字详解
Sep 25 Javascript
jquery实现弹出div,始终显示在屏幕正中间的简单实例
Mar 08 Javascript
node.js中的events.emitter.once方法使用说明
Dec 10 Javascript
JS获取数组最大值、最小值及长度的方法
Nov 24 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
Bootstrap表单布局
Jul 19 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
Nov 30 Javascript
尝试自己动手用react来写一个分页组件(小结)
Feb 09 Javascript
js实现整体缩放页面适配移动端
Mar 31 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之数据库操作详解及乱码解决!
2007/01/02 PHP
php提交表单时判断 if($_POST[submit])与 if(isset($_POST[submit])) 的区别
2011/02/08 PHP
PHP+MySQL实现无极限分类栏目的方法
2015/12/23 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
js对文章内容进行分页示例代码
2014/03/05 Javascript
JS实现仿苹果底部任务栏菜单效果代码
2015/08/28 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
Angularjs CURD 详解及实例代码
2016/09/14 Javascript
JS实现鼠标滑过显示边框的菜单效果
2016/09/21 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
JQuery animate动画应用示例
2019/05/14 jQuery
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
javascript 设计模式之组合模式原理与应用详解
2020/04/08 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
python实现判断数组是否包含指定元素的方法
2015/07/15 Python
Python 爬虫学习笔记之正则表达式
2016/09/21 Python
Django 实现下载文件功能的示例
2018/03/06 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
python getopt模块使用实例解析
2019/12/18 Python
python带参数打包exe及调用方式
2019/12/21 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
应届大学毕业生找工作的求职信范文
2013/11/29 职场文书
毕业证丢失证明范本
2014/09/20 职场文书
学生检讨书怎么写
2014/10/09 职场文书
琅琊山导游词
2015/02/05 职场文书
人生遥控器观后感
2015/06/11 职场文书
财务人员入职担保书
2015/09/22 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
浅谈移动端中的视口(viewport)的具体使用
2021/04/13 HTML / CSS
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL