前端手机验证码cookie存储
注册的时候经常会有手机验证码的输入这个环节,在第一次点击发送了验证码只后,比如倒计时只走了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存储的更多相关文章
- django 发送手机验证码
一.流程分析: 1.用户在项目前端,输入手机号,然后点击[获取验证码],将手机号发到post到后台. 2.后台验证手机号是否合法,是否已被占用,如果通过验证,则生成验证码,并通过运行脚本,让短信运营商 ...
- 渗透测试===使用BURPSUIT暴力破解某网站的手机验证码
手机短信验证是企业给消费者(用户)的一个凭证,通过手机短信内容的验证码来验证身份.主要用来用户注册,找回密码,用户登录等等作为强身份认证. 目前验证码的格式主要是数字,从4位到6位不等.一般来说验 ...
- Spring Cloud OAuth2(二) 扩展登陆方式:账户密码登陆、 手机验证码登陆、 二维码扫码登陆
概要 基于上文讲解的spring cloud 授权服务的搭建,本文扩展了spring security 的登陆方式,增加手机验证码登陆.二维码登陆. 主要实现方式为使用自定义filter. Authe ...
- Spring Security 实现手机验证码登录
思路:参考用户名密码登录过滤器链,重写认证和授权 示例如下(该篇示例以精简为主,演示主要实现功能,全面完整版会在以后的博文中发出): 由于涉及内容较多,建议先复制到本地工程中,然后在细细研究. 1. ...
- C# WinForm 使用SMS接口发送手机验证码+图形验证码+IP限制
https://blog.csdn.net/IT_xiao_guang_guang/article/details/104299983 前言 1.发送手机验证码用的是网建的SMS接口(http:/ ...
- 前端分享之cookie的使用及单点登录
cookie是什么 cookie的英文意思是饼干.在计算机术语中指服务端存放在客户端的一段数据.这段数据在客户端每次进行http请求时会自动加在http请求报文中的header上:服务端在响应时,可以 ...
- js获取手机验证码倒计时的实现
方案一 <div class="div user-input"> <input type="number" class="code& ...
- iOS开发查看手机app本地存储的文件
开发过程中,有时会在本地存储一些文件,但是我们不确定有没有存上,可以通过以下方法来查看测试手机上本地存储的文件: 1.选择xcode上面的window下面的Devices 2.先在左边选中你当前的设备 ...
- js读写Cookie问题(Cookie存储时长、Cookie存储域)汇总
在采集网站用户行为数据/使用js对用户行为做交互时,经常会使用到Cookie,了解Js Cookie的读写,以及一些细节,非常重要. 什么是Cookie 所谓Cookie,只是一条极为短小的信息, ...
随机推荐
- 论vue项目api相关代码的组织方式
论vue项目api相关代码的组织方式 看了下项目组同事的代码,发现不同项目有不同的组织版本 版本一: ├─apis │ a.api.js │ b.api.js │ b.api.js │ d.api.j ...
- 2019-04-12 SQL 主键约束
create table dbo.AssetPool( ID bigint not null, poolname nvarchar(50)not null, constraint pk_AssetPo ...
- android下xml放哪儿?
1.用Project->Deployment,打开发布文件窗口,增加要发布的文件.然后设置文件发布的位置Remote Path,填写为assets\internal\ 2.代码 varp: st ...
- Spring Boot 定时任务单线程和多线程
Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task; import java.text.SimpleDat ...
- mysql explain介绍
mysql环境优化: 1.如果order by 没有利用到索引,那么将会出现fileSort,如果sort_buffer不够大,fileSort过程则需要使用临时文件 ,fileSort优化,主要通过 ...
- sublime text 插件emmet快捷命令
原文链接:http://www.17yaobai.com/?p=255 语法: 后代:> 缩写:nav>ul>li <nav> <ul> <li> ...
- 《深入理解Android 卷III》第八章深入理解Android壁纸
<深入理解Android 卷III>即将公布,作者是张大伟. 此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分 ...
- win7 32位支持多大内存|win7 32位旗舰版最多能识别多少内存
win7 32位支持多大内存|win7 32位旗舰版最多能识别多少内存 内存的大小决定系统运行速度,所以不少人认为只要内存加大就行了,其实这是不对的,因为win7 32位能支持的内存大小是有限制的,并 ...
- 【转】不要使用SBJSON(json-framework)
原文网址:http://blog.devtang.com/2012/05/05/do-not-use-sbjson/ 不知道为什么,在iOS开发中,有很多人使用 SBJSON (又被称作json-fr ...
- Node.js:Strea
ylbtech-Node.js:Stream 1.返回顶部 1. Node.js Stream(流) Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请 ...