JavaScript使用cookie实现记住账号密码功能


Posted in Javascript onApril 27, 2015

很多登录功能上都有个“记住密码”的功能,其实无非就是对cookie的读取。

下面展示这个功能的代码,原作者已无法考究。。。。

测试方法:直接输入账号密码,提交后,刷新页面,再输入同样的账号,就可以显示

<!DOCTYPE HTML>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>js COOKIE 记住帐号或密码</title>
<script type="text/javascript">
  window.onload=function onLoginLoaded() {
    if (isPostBack == "False") {
      GetLastUser();
    }
  }
   
  function GetLastUser() {
    var id = "49BAC005-7D5B-4231-8CEA-16939BEACD67";//GUID标识符
    var usr = GetCookie(id);
    if (usr != null) {
      document.getElementById('txtUserName').value = usr;
    } else {
      document.getElementById('txtUserName').value = "001";
    }
    GetPwdAndChk();
  }
  //点击登录时触发客户端事件
   
  function SetPwdAndChk() {
    //取用户名
    var usr = document.getElementById('txtUserName').value;
    alert(usr);
    //将最后一个用户信息写入到Cookie
    SetLastUser(usr);
    //如果记住密码选项被选中
    if (document.getElementById('chkRememberPwd').checked == true) {
      //取密码值
      var pwd = document.getElementById('txtPassword').value;
      alert(pwd);
      var expdate = new Date();
      expdate.setTime(expdate.getTime() + 14 * (24 * 60 * 60 * 1000));
      //将用户名和密码写入到Cookie
      SetCookie(usr, pwd, expdate);
    } else {
      //如果没有选中记住密码,则立即过期
      ResetCookie();
    }
  }
   
  function SetLastUser(usr) {
    var id = "49BAC005-7D5B-4231-8CEA-16939BEACD67";
    var expdate = new Date();
    //当前时间加上两周的时间
    expdate.setTime(expdate.getTime() + 14 * (24 * 60 * 60 * 1000));
    SetCookie(id, usr, expdate);
  }
  //用户名失去焦点时调用该方法
   
  function GetPwdAndChk() {
    var usr = document.getElementById('txtUserName').value;
    var pwd = GetCookie(usr);
    if (pwd != null) {
      document.getElementById('chkRememberPwd').checked = true;
      document.getElementById('txtPassword').value = pwd;
    } else {
      document.getElementById('chkRememberPwd').checked = false;
      document.getElementById('txtPassword').value = "";
    }
  }
  //取Cookie的值
   
  function GetCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
      var j = i + alen;
      //alert(j);
      if (document.cookie.substring(i, j) == arg) return getCookieVal(j);
      i = document.cookie.indexOf(" ", i) + 1;
      if (i == 0) break;
    }
    return null;
  }
  var isPostBack = "<%= IsPostBack %>";
   
  function getCookieVal(offset) {
    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1) endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
  }
  //写入到Cookie
   
  function SetCookie(name, value, expires) {
    var argv = SetCookie.arguments;
    //本例中length = 3
    var argc = SetCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path = (argc > 3) ? argv[3] : null;
    var domain = (argc > 4) ? argv[4] : null;
    var secure = (argc > 5) ? argv[5] : false;
    document.cookie = name + "=" + escape(value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + ((path == null) ? "" : ("; path=" + path)) + ((domain == null) ? "" : ("; domain=" + domain)) + ((secure == true) ? "; secure" : "");
  }
   
  function ResetCookie() {
    var usr = document.getElementById('txtUserName').value;
    var expdate = new Date();
    SetCookie(usr, null, expdate);
  }
</script>
</head>
<body>
<form id="form1">
 <div> 用户名:
  <input type="text" ID="txtUserName" onblur="GetPwdAndChk()">
  <input type="password" ID="txtPassword">
  密码:
  <input type="checkbox" ID="chkRememberPwd" />
  记住密码
  <input type="button" OnClick="SetPwdAndChk()" value="进入"/>
 </div>
</form>
</body>
</html>
Javascript 相关文章推荐
Javascript delete 引用类型对象
Nov 01 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
Mar 13 Javascript
jQuery Validate验证框架经典大全
Sep 23 Javascript
javascript中return,return true,return false三者的用法及区别
Nov 17 Javascript
深入探究AngularJS框架中Scope对象的超级教程
Jan 04 Javascript
jQuery 实现评论等级好评差评特效
May 06 Javascript
jQuery短信验证倒计时功能实现方法详解
May 25 Javascript
浅谈关于axios和session的一些事
Jul 13 Javascript
详解js静态资源文件请求的处理
Aug 01 Javascript
es6中比较有用的7个技巧小结
Jul 12 Javascript
vue请求数据的三种方式
Mar 04 Javascript
使用console进行性能测试
Apr 27 #Javascript
浅谈javascript实现八大排序
Apr 27 #Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
Apr 27 #Javascript
jQuery插件Tmpl的简单使用方法
Apr 27 #Javascript
javascript关于运动的各种问题经典总结
Apr 27 #Javascript
分享9点个人认为比较重要的javascript 编程技巧
Apr 27 #Javascript
javascript+html5实现仿flash滚动播放图片的方法
Apr 27 #Javascript
You might like
四个常见html网页乱码问题及解决办法
2015/09/08 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
bootstrap laydate日期组件使用详解
2017/01/04 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
vue实现模态框的通用写法推荐
2018/02/26 Javascript
vue 表单输入格式化中文输入法异常问题
2018/05/30 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
解决iview多表头动态更改列元素发生的错误的方法
2018/11/02 Javascript
微信小程序从注册账号到上架(图文详解)
2019/07/17 Javascript
在JavaScript中查找字符串中最长单词的三种方法(推荐)
2021/01/18 Javascript
numpy.delete删除一列或多列的方法
2018/04/03 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
浅谈Python批处理文件夹中的txt文件
2019/03/11 Python
python打开使用的方法
2019/09/30 Python
Spring Cloud Feign高级应用实例详解
2019/12/10 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
python 图像插值 最近邻、双线性、双三次实例
2020/07/05 Python
记一次Django响应超慢的解决过程
2020/09/17 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
培训专员岗位职责
2014/02/26 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
2014党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
工程安全生产协议书
2014/11/21 职场文书
大学学生会主席竞选稿
2015/11/19 职场文书
golang中的空slice案例
2021/04/27 Golang