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中的var_dump函数实现代码
Sep 07 Javascript
js 代码优化点滴记录
Feb 19 Javascript
node.js中的fs.close方法使用说明
Dec 17 Javascript
JavaScript使用DeviceOne开发实战(三)仿微信应用
Dec 02 Javascript
浅谈javascript中的数据类型转换
Dec 27 Javascript
基于vue实现多引擎搜索及关键字提示
Mar 16 Javascript
js编写简单的计时器功能
Jul 15 Javascript
javascript验证form表单数据的案例详解
Mar 25 Javascript
vue中v-text / v-html使用实例代码详解
Apr 02 Javascript
Vue项目中配置pug解析支持
May 10 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
Sep 19 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
Apr 08 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
PHP syntax error, unexpected $end 错误的一种原因及解决
2008/10/25 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
2009/09/30 PHP
PHP中的替代语法介绍
2015/01/09 PHP
php自定义函数实现统计中文字符串长度的方法小结
2017/04/15 PHP
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
javaScript如何处理从java后台返回的list
2014/04/24 Javascript
window.location 对象所包含的属性
2014/10/10 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
jQuery插件实现多级联动菜单效果
2015/12/01 Javascript
微信小程序之小豆瓣图书实例
2016/11/30 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
基于Vue实现拖拽效果
2018/04/27 Javascript
JavaScript实现动态添加、移除元素或属性的方法分析
2019/01/03 Javascript
vue权限管理系统的实现代码
2019/01/17 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
layui问题之渲染数据表格时,仅出现10条数据的解决方法
2019/09/12 Javascript
[00:27]DOTA2荣耀之路2:Patience from zhou!
2018/05/24 DOTA
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python编程培训 python培训靠谱吗
2018/01/17 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python批量赋值操作实例
2018/10/22 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
解决Django加载静态资源失败的问题
2019/07/28 Python
python处理document文档保留原样式
2019/09/23 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
贴吧吧主申请感言
2015/08/03 职场文书
Python使用华为API为图像设置多个锚点标签
2022/04/12 Python
MySQL性能指标TPS+QPS+IOPS压测
2022/08/05 MySQL