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 dom追加内容实现示例
Sep 21 Javascript
采用call方式实现js继承
May 20 Javascript
jQuery中prepend()方法用法实例
Dec 25 Javascript
jQuery构造函数init参数分析
May 13 Javascript
JS日期格式化之javascript Date format
Oct 01 Javascript
JS生成某个范围的随机数【四种情况详解】
Apr 20 Javascript
Javascript自定义事件详解
Jan 13 Javascript
vue生成token保存在客户端localStorage中的方法
Oct 25 Javascript
原生JS实现简单的无缝自动轮播效果
Sep 26 Javascript
微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析
May 03 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
微信小程序实现拨打电话功能的示例代码
Jun 28 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
服务器端解压缩zip的脚本
2006/12/22 PHP
PHP加密解密实例分析
2015/12/25 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
2019/09/23 PHP
19个很有用的 JavaScript库推荐
2011/06/27 Javascript
用JQuery在网页中实现分隔条功能的代码
2012/08/09 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
js验证上传图片的方法
2015/05/12 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
Vue.js动态添加、删除选题的实例代码
2016/09/30 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
基于vue.js的分页插件详解
2017/11/27 Javascript
Java设计中的Builder模式的介绍
2018/03/22 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
Python实现敏感词过滤的4种方法
2020/09/12 Python
CSS3实现背景透明文字不透明的示例代码
2018/06/25 HTML / CSS
Android本地应用打开方法——通过html5写连接
2016/03/11 HTML / CSS
Timberland澳大利亚官网:全球领先的户外品牌
2019/12/10 全球购物
大二学期个人自我评价
2014/01/13 职场文书
自荐信需注意事项
2014/01/25 职场文书
三年级小学生评语
2014/04/22 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
单位委托书格式范本
2014/09/29 职场文书
资料员岗位职责
2015/02/10 职场文书
社区端午节活动总结
2015/02/11 职场文书
MySQL子查询中order by不生效问题的解决方法
2021/08/02 MySQL
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
mysql sock 文件解析及作用讲解
2022/07/15 MySQL