注册的时候经常会有手机验证码的输入这个环节,在第一次点击发送了验证码只后,比如倒计时只走了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. 移动端rem.js使用方法

    下面的代码一是我根据rem的使用经验,自己写的一个rem.js,发现很好用,能适用所有移动端h5页面的自适应需求: 代码一: ``` window.onload = function(){ /*720 ...

  2. 快速上手Linux 玩转典型应用_慕课网笔记

    1.没有exe安装程序 2.区分大小写 3.一切皆文件 4.文件后缀不是那么重要,只是为了好识别 -------------------------------------------------- ...

  3. Syncfusion在WinPhone8.1实现统计图

    using Syncfusion.UI.Xaml.Charts; public static SfChart InitCompareChart(string fundName, double tenT ...

  4. 安装GCC for Red Hat Enterprise Linux Server release 6(64位)

    http://www.cnblogs.com/emanlee/archive/2012/08/11/2633895.html

  5. JAVA实现多线程的两种方法

    参考URL: http://www.cnblogs.com/jbelial/archive/2013/03/17/2964472.html 1.继承 java.lang.Thread 类. 2.实现R ...

  6. 洛谷 P1948 [USACO08JAN]电话线Telephone Lines

    P1948 [USACO08JAN]电话线Telephone Lines 题目描述 Farmer John wants to set up a telephone line at his farm. ...

  7. 洛谷 P1768 天路

    P1768 天路 题目描述 “那是一条神奇的天路诶~,把第一个神犇送上天堂~”,XDM先生唱着这首“亲切”的歌曲,一道猥琐题目的灵感在脑中出现了. 和C_SUNSHINE大神商量后,这道猥琐的题目终于 ...

  8. Java Collection框架—List\ set \map 的异同世界

    Java集合是多个对象的容方法.集合(容方法).简单点,事实上就是一个对象,能将具有同样性质的多个元素汇聚成一个总体. Collections Framwork是用来表现和操纵集合的一个统一的体系结构 ...

  9. Java Word Break(单词拆解)

    给定一个字符串 String s = "leetcode" dict = ["leet", "code"]. 查看一下是够是字典中的词语组成 ...

  10. maven创建web报错failure to transfer org.codehaus.plexus

    failure to transfer org.codehaus.plexus:plexus:pom:2.0.5 from http:// repo.maven.apache.org/maven2 w ...