注册的时候经常会有手机验证码的输入这个环节,在第一次点击发送了验证码只后,比如倒计时只走了10秒钟,然后刷新的话,倒计时要还是存在的,这个时候就要有一个cookie的存在了。

html的代码

 <input type="button" id="second" value="获取验证码"/>

js代码

 <!--逻辑功能代码 -->
<script>
//发送验证码时添加cookie
function addCookie(name, value, expiresHours) {
var cookieString = name + "=" + encodeURI(value);
//判断是否设置过期时间,0代表关闭浏览器时失效
if (expiresHours > 0) {
var date = new Date();
date.setTime(date.getTime() + expiresHours * 1000);
cookieString = cookieString + ";expires=" + date.toUTCString();
}
document.cookie = cookieString; }
//修改cookie的值
function editCookie(name, value, expiresHours) {
var cookieString = name + "=" + encodeURI(value)
if (expiresHours > 0) {
var date = new Date();
date.setTime(date.getTime() + expiresHours * 1000); //单位是毫秒
cookieString = cookieString + ";expires=" + date.toGMTString();
}
document.cookie = cookieString;
}
//根据名字获取cookie的值
function getCookieValue(name) {
var strCookie = document.cookie;
var arrCookie = strCookie.split("; ");
for (var i = 0; i < arrCookie.length; i++) {
var le = arrCookie.length -1;
var arr = arrCookie[i].split("=");
if (arr[0] == name) {
return decodeURI(arr[1]);
break;
} else {
return "";
break;
}
}
}
$(function () {
$("#second").click(function () {
sendCode($("#second"));
});
v = getCookieValue("secondsremained");//获取cookie值
if (v > 0) {
settime($("#second"));//开始倒计时
}
})
//发送验证码
function sendCode(obj) {
var phone_1 = $("#phone_1").val();
var result = isPhoneNum(); //判断手机号码是不是正确的
if (result) {
var code_1 = $('#code_1').val();
if (code_1) {
doPostBack('<?php echo url(U . 'index.php?a=index/User/sms'); ?>', backFunc1, {"phone_1": phone_1, "code": code_1});
addCookie("secondsremained", 60, 60);//添加cookie记录,有效时间60s
settime(obj);//开始倒计时
} else {
alert('请输入验证码!');
return false;
}
}
}
//将手机利用ajax提交到后台的发短信接口
function doPostBack(url, backFunc, queryParam) {
$.ajax({
async: false,
cache: false,
type: 'POST',
url: url, // 请求的action路径
data: queryParam,
error: function () {// 请求失败处理函数
},
success: backFunc //请求成功处理函数
});
}
function backFunc1(data) {
//请求成功的函数处理
}
//开始倒计时
var countdown;
function settime(obj) {
countdown = getCookieValue("secondsremained");
if (countdown == 0) {
obj.removeAttr("disabled"); //添加不可以再点击事件
obj.val("获取验证码");
return;
} else {
obj.attr("disabled", true);
obj.val("重新发送(" + countdown + ")");
countdown--;
editCookie("secondsremained", countdown, countdown + 1);
}
setTimeout(function () {
settime(obj)
}, 1000) //每1000毫秒执行一次
}
//校验手机号是否合法
function isPhoneNum() {
var phone_1 = $("#phone_1").val();
var myreg = /^1[34578]\d{9}$/;
if (!myreg.test(phone_1)) {
alert('请输入有效的手机号码!');
return false;
} else {
return true;
}
} });
</script>

前端手机验证码cookie存储的更多相关文章

  1. django 发送手机验证码

    一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商 ...

  2. 渗透测试===使用BURPSUIT暴力破解某网站的手机验证码

      手机短信验证是企业给消费者(用户)的一个凭证,通过手机短信内容的验证码来验证身份.主要用来用户注册,找回密码,用户登录等等作为强身份认证. 目前验证码的格式主要是数字,从4位到6位不等.一般来说验 ...

  3. Spring Cloud OAuth2(二) 扩展登陆方式:账户密码登陆、 手机验证码登陆、 二维码扫码登陆

    概要 基于上文讲解的spring cloud 授权服务的搭建,本文扩展了spring security 的登陆方式,增加手机验证码登陆.二维码登陆. 主要实现方式为使用自定义filter. Authe ...

  4. Spring Security 实现手机验证码登录

    思路:参考用户名密码登录过滤器链,重写认证和授权 示例如下(该篇示例以精简为主,演示主要实现功能,全面完整版会在以后的博文中发出): 由于涉及内容较多,建议先复制到本地工程中,然后在细细研究. 1. ...

  5. C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制

    https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言   1.发送手机验证码用的是网建的SMS接口(http:/ ...

  6. 前端分享之cookie的使用及单点登录

    cookie是什么 cookie的英文意思是饼干.在计算机术语中指服务端存放在客户端的一段数据.这段数据在客户端每次进行http请求时会自动加在http请求报文中的header上:服务端在响应时,可以 ...

  7. js获取手机验证码倒计时的实现

    方案一 <div class="div user-input"> <input type="number" class="code& ...

  8. iOS开发查看手机app本地存储的文件

    开发过程中,有时会在本地存储一些文件,但是我们不确定有没有存上,可以通过以下方法来查看测试手机上本地存储的文件: 1.选择xcode上面的window下面的Devices 2.先在左边选中你当前的设备 ...

  9. js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总

    在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要.   什么是Cookie 所谓Cookie,只是一条极为短小的信息, ...

随机推荐

  1. 2018 noip 考前临死挣扎

    基础算法 倍增 贪心 分块 二分 三分 数据结构 线段树 对顶堆 数学 质数 约数 同余 组合 矩阵乘法 图论 二分图判定以及最大匹配 字符串 Tire树 KMP 最小表示法 Hash Manache ...

  2. CPA-IBE

    1.Transaction ID 生成机制 在有的情况下,我们需要得到固定格式的序列号,而不是数据库默认的自增序列号, 1.1 通常方式(隐式生成并通过触发器实时插入相关表) 例如我们要求此序列号必须 ...

  3. CodeForces 551E GukiZ and GukiZiana

    GukiZ and GukiZiana Time Limit: 10000ms Memory Limit: 262144KB This problem will be judged on CodeFo ...

  4. 转载 - 跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题

    出处:http://www.cnblogs.com/grenet/p/3145800.html 精确覆盖问题的定义:给定一个由0-1组成的矩阵,是否能找到一个行的集合,使得集合中每一列都恰好包含一个1 ...

  5. (转载)Html解析工具Jsoup

    jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTM ...

  6. SQL优化(SQL TUNING)之10分钟完毕亿级数据量性能优化(SQL调优)

    前几天.一个用户研发QQ找我,例如以下: 自由的海豚. 16:12:01 岛主,我的一条SQL查不出来结果,能帮我看看不? 兰花岛主 16:12:10 多久不出结果? 自由的海豚 16:12:17 多 ...

  7. [Javascript] Deep Search nested tag element in DOM tree

    // For example you want to search for nested ul and ol in a DOM tree branch // Give example <ol&g ...

  8. 【cl】Red Hat Linux虚拟机安装Vmware Tools

    1.选择虚拟机,选中导航栏虚拟机>VMware Tool安装 选择右键>extract to 选择/home,新建了自己的文件夹,然后点击extract 一直enter,一直到 然后reb ...

  9. H3C子接口配置要点及实例说明

     类型一:以太网子接口配置要点(单臂路由)  第一步:在路由器对端的交换机上配置好vlan信息(如vlan10/vlan20)  第二步:将交换机上与路由器直接相连的以太口配置成trunk口并同意 ...

  10. 不使用系统自带的button

    // //  LKTitleBtn.m //  01-彩票 // //  Created by Lenny  on 3/17/15. //  Copyright (c) 2015 Lenny. All ...