cookie记住密码/base64加密(js控制)
程序员文章站
2022-03-18 14:33:59
• 配置cookie • 写入cookie • 读取cookie • base64加密/解密方法 • form表单 ......
• 配置cookie
1 //设置cookie 2 function setCookie ( name, value, expdays ) 3 { 4 var expdate = new Date(); 5 //设置Cookie过期日期 6 expdate.setDate(expdate.getDate() + expdays) ; 7 //添加Cookie并转码 8 document.cookie = encodeURI(name) + "=" + escape(value) + ";expires=" + expdate.toUTCString(); 9 10 } 11 12 //得到cookie 13 function getCookie ( name ) 14 { 15 //获取name在Cookie中起止位置 16 var start = document.cookie.indexOf(name+"=") ; 17 if ( start != -1 ) 18 { 19 start = start + name.length + 1 ; 20 //获取value的终止位置 21 var end = document.cookie.indexOf(";", start) ; 22 if ( end == -1 ) 23 end = document.cookie.length ; 24 //截获cookie的value值,并返回 25 return unescape(document.cookie.substring(start,end)) ; 26 } 27 return "" ; 28 } 29 30 //删除cookie 31 function delCookie ( name ) 32 { 33 setCookie ( name, "", -1 ) ; 34 }
• 写入cookie
1 //提交表单时触发 2 function trans() { 3 4 //base64加密 5 loginForm.password.value = base64encode(loginForm.password.value); 6 7 //获取表单输入:用户名,密码,是否保存密码 8 var username = document.getElementById("username").value.trim() ; 9 var password = document.getElementById("password").value.trim() ; 10 var isRmbPwd = document.getElementById("isRmbPwd").checked ; 11 12 //判断用户名,密码是否为空(全空格也算空) 13 if ( username.length != 0 && password.length != 0 ) 14 { 15 //若复选框勾选,则添加Cookie,记录密码 16 if ( isRmbPwd == true ) 17 { 18 var name = getCookie("username") ; 19 if(name != username) { 20 delCookie ("username") ; 21 delCookie (name) ; 22 } 23 setCookie ( "username", username, 30 ) ; 24 setCookie ( username, password, 30 ) ; 25 } 26 //否则清除Cookie 27 else 28 { 29 delCookie ( "username" ) ; 30 delCookie ( username ) ; 31 } 32 return true ; 33 } 34 35 36 }
• 读取cookie
1 //从Cookie获取到用户名 2 var username = getCookie("username") ; 3 //如果用户名为空,则给表单元素赋空值 4 if ( username == "" ) 5 { 6 document.getElementById("username").value="" ; 7 document.getElementById("password").value="" ; 8 document.getElementById("isRmbPwd").checked=false ; 9 } 10 //获取对应的密码,并把用户名,密码赋值给表单 11 else 12 { 13 var pwd= getCookie(encodeURI(username)) ; 14 //base64解密 15 password = base64decode(pwd); 16 17 document.getElementById("username").value = username ; 18 document.getElementById("password").value = password ; 19 document.getElementById("isRmbPwd").checked = true ; 20 }
• base64加密/解密方法
1 //参数设置 2 var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; 3 var base64DecodeChars = new Array( 4 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 7 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, 8 -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 9 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, 10 -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 11 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); 12 13 //加密方法 14 function base64encode(str) { 15 var out, i, len; 16 var c1, c2, c3; 17 len = str.length; 18 i = 0; 19 out = ""; 20 while(i < len) { 21 c1 = str.charCodeAt(i++) & 0xff; 22 if(i == len) { 23 out += base64EncodeChars.charAt(c1 >> 2); 24 out += base64EncodeChars.charAt((c1 & 0x3) << 4); 25 out += "=="; 26 break; 27 } 28 c2 = str.charCodeAt(i++); 29 if(i == len) { 30 out += base64EncodeChars.charAt(c1 >> 2); 31 out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); 32 out += base64EncodeChars.charAt((c2 & 0xF) << 2); 33 out += "="; 34 break; 35 } 36 c3 = str.charCodeAt(i++); 37 out += base64EncodeChars.charAt(c1 >> 2); 38 out += base64EncodeChars.charAt(((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)); 39 out += base64EncodeChars.charAt(((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)); 40 out += base64EncodeChars.charAt(c3 & 0x3F); 41 } 42 return out; 43 } 44 45 //解密方法 46 function base64decode(str){ 47 var c1, c2, c3, c4; 48 var i, len, out; 49 len = str.length; 50 i = 0; 51 out = ""; 52 while (i < len) { 53 /* c1 */ 54 do { 55 c1 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; 56 } 57 while (i < len && c1 == -1); 58 if (c1 == -1) 59 break; 60 /* c2 */ 61 do { 62 c2 = base64DecodeChars[str.charCodeAt(i++) & 0xff]; 63 } 64 while (i < len && c2 == -1); 65 if (c2 == -1) 66 break; 67 out += String.fromCharCode((c1 << 2) | ((c2 & 0x30) >> 4)); 68 /* c3 */ 69 do { 70 c3 = str.charCodeAt(i++) & 0xff; 71 if (c3 == 61) 72 return out; 73 c3 = base64DecodeChars[c3]; 74 } 75 while (i < len && c3 == -1); 76 if (c3 == -1) 77 break; 78 out += String.fromCharCode(((c2 & 0XF) << 4) | ((c3 & 0x3C) >> 2)); 79 /* c4 */ 80 do { 81 c4 = str.charCodeAt(i++) & 0xff; 82 if (c4 == 61) 83 return out; 84 c4 = base64DecodeChars[c4]; 85 } 86 while (i < len && c4 == -1); 87 if (c4 == -1) 88 break; 89 out += String.fromCharCode(((c3 & 0x03) << 6) | c4); 90 } 91 return out; 92 }
• form表单
1 <input id="username" name="username" type="text" class="txt" 2 value="" placeholder="请输入用户名" value="${username}"/> 3 4 <input id="password" name="password" type="password" 5 class="txt" value="" placeholder="请输入密码 " /> 6 7 <input type="checkbox" id="isRmbPwd" name="isRmbPwd" checked="checked"> 8 <span class="isRmbPwdText">记住密码</span> 9 10 <input type="submit" class="login_btn" value="登录" onclick="trans()" />
上一篇: PHP获取当前时间不准确问题解决方案
下一篇: PHP生成图表pChart的示例解析
推荐阅读