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

html的代码

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

js代码

  1. <!--逻辑功能代码 -->
  2. <script>
  3. //发送验证码时添加cookie
  4. function addCookie(name, value, expiresHours) {
  5. var cookieString = name + "=" + encodeURI(value);
  6. //判断是否设置过期时间,0代表关闭浏览器时失效
  7. if (expiresHours > 0) {
  8. var date = new Date();
  9. date.setTime(date.getTime() + expiresHours * 1000);
  10. cookieString = cookieString + ";expires=" + date.toUTCString();
  11. }
  12. document.cookie = cookieString;
  13.  
  14. }
  15. //修改cookie的值
  16. function editCookie(name, value, expiresHours) {
  17. var cookieString = name + "=" + encodeURI(value)
  18. if (expiresHours > 0) {
  19. var date = new Date();
  20. date.setTime(date.getTime() + expiresHours * 1000); //单位是毫秒
  21. cookieString = cookieString + ";expires=" + date.toGMTString();
  22. }
  23. document.cookie = cookieString;
  24. }
  25. //根据名字获取cookie的值
  26. function getCookieValue(name) {
  27. var strCookie = document.cookie;
  28. var arrCookie = strCookie.split("; ");
  29. for (var i = 0; i < arrCookie.length; i++) {
  30. var le = arrCookie.length -1;
  31. var arr = arrCookie[i].split("=");
  32. if (arr[0] == name) {
  33. return decodeURI(arr[1]);
  34. break;
  35. } else {
  36. return "";
  37. break;
  38. }
  39. }
  40. }
  41. $(function () {
  42. $("#second").click(function () {
  43. sendCode($("#second"));
  44. });
  45. v = getCookieValue("secondsremained");//获取cookie值
  46. if (v > 0) {
  47. settime($("#second"));//开始倒计时
  48. }
  49. })
  50. //发送验证码
  51. function sendCode(obj) {
  52. var phone_1 = $("#phone_1").val();
  53. var result = isPhoneNum(); //判断手机号码是不是正确的
  54. if (result) {
  55. var code_1 = $('#code_1').val();
  56. if (code_1) {
  57. doPostBack('<?php echo url(U . 'index.php?a=index/User/sms'); ?>', backFunc1, {"phone_1": phone_1, "code": code_1});
  58. addCookie("secondsremained", 60, 60);//添加cookie记录,有效时间60s
  59. settime(obj);//开始倒计时
  60. } else {
  61. alert('请输入验证码!');
  62. return false;
  63. }
  64. }
  65. }
  66. //将手机利用ajax提交到后台的发短信接口
  67. function doPostBack(url, backFunc, queryParam) {
  68. $.ajax({
  69. async: false,
  70. cache: false,
  71. type: 'POST',
  72. url: url, // 请求的action路径
  73. data: queryParam,
  74. error: function () {// 请求失败处理函数
  75. },
  76. success: backFunc //请求成功处理函数
  77. });
  78. }
  79. function backFunc1(data) {
  80. //请求成功的函数处理
  81. }
  82. //开始倒计时
  83. var countdown;
  84. function settime(obj) {
  85. countdown = getCookieValue("secondsremained");
  86. if (countdown == 0) {
  87. obj.removeAttr("disabled"); //添加不可以再点击事件
  88. obj.val("获取验证码");
  89. return;
  90. } else {
  91. obj.attr("disabled", true);
  92. obj.val("重新发送(" + countdown + ")");
  93. countdown--;
  94. editCookie("secondsremained", countdown, countdown + 1);
  95. }
  96. setTimeout(function () {
  97. settime(obj)
  98. }, 1000) //每1000毫秒执行一次
  99. }
  100. //校验手机号是否合法
  101. function isPhoneNum() {
  102. var phone_1 = $("#phone_1").val();
  103. var myreg = /^1[34578]\d{9}$/;
  104. if (!myreg.test(phone_1)) {
  105. alert('请输入有效的手机号码!');
  106. return false;
  107. } else {
  108. return true;
  109. }
  110. }
  111.  
  112. });
  113. </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. 论vue项目api相关代码的组织方式

    论vue项目api相关代码的组织方式 看了下项目组同事的代码,发现不同项目有不同的组织版本 版本一: ├─apis │ a.api.js │ b.api.js │ b.api.js │ d.api.j ...

  2. 2019-04-12 SQL 主键约束

    create table dbo.AssetPool( ID bigint not null, poolname nvarchar(50)not null, constraint pk_AssetPo ...

  3. android下xml放哪儿?

    1.用Project->Deployment,打开发布文件窗口,增加要发布的文件.然后设置文件发布的位置Remote Path,填写为assets\internal\ 2.代码 varp: st ...

  4. Spring Boot 定时任务单线程和多线程

    Spring Boot 的定时任务: 第一种:把参数配置到.properties文件中: 代码: package com.accord.task; import java.text.SimpleDat ...

  5. mysql explain介绍

    mysql环境优化: 1.如果order by 没有利用到索引,那么将会出现fileSort,如果sort_buffer不够大,fileSort过程则需要使用临时文件 ,fileSort优化,主要通过 ...

  6. sublime text 插件emmet快捷命令

    原文链接:http://www.17yaobai.com/?p=255 语法: 后代:> 缩写:nav>ul>li <nav> <ul> <li> ...

  7. 《深入理解Android 卷III》第八章深入理解Android壁纸

    <深入理解Android 卷III>即将公布,作者是张大伟. 此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分 ...

  8. win7 32位支持多大内存|win7 32位旗舰版最多能识别多少内存

    win7 32位支持多大内存|win7 32位旗舰版最多能识别多少内存 内存的大小决定系统运行速度,所以不少人认为只要内存加大就行了,其实这是不对的,因为win7 32位能支持的内存大小是有限制的,并 ...

  9. 【转】不要使用SBJSON(json-framework)

    原文网址:http://blog.devtang.com/2012/05/05/do-not-use-sbjson/ 不知道为什么,在iOS开发中,有很多人使用 SBJSON (又被称作json-fr ...

  10. Node.js:Strea

    ylbtech-Node.js:Stream 1.返回顶部 1. Node.js Stream(流) Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请 ...