路漫漫其修远兮:js的成长经历(二)—— 利用cookie写登录时七天免登录

利用cookie写登录时七天免登录

什么是cookie

JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。

而cookie是运行在客户端的,所以可以用JS来设置cookie.

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢?

首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

cookie的设置方法

document.cookie=“name=”+username;
//就是将cookie中的name变量的值赋值为传入的变量usename。

1.js设置cookie的函数封装

function setCookie(name,value,day){
	var oDate = new Date();
	oDate.setDate(oDate.getDate()+ day);
	//将cookie中name的值赋值为value,在cookie中保存该变量的时间值设为oDate
	document.cookie = name + "=" + value + ";expires=" + oDate;
}

2.js读取cookie的函数封装

function getCookie(name){
	var str = document.cookie;
	var arr = str.split("; ");
	//用分割的方法通过name获取name对应的value,最后返回
	for(var i=0;i<arr.length;i++){
		var arr1 = arr[i].split("=");
		if(arr1[0] == name){
			return arr1[1];
		}
	}
}

3.js删除cookie变量的函数封装

function removeCookie(name){
	//删除cookie中的变量就是将保存的时间设置为-1
	setCookie(name,1,-1);
}

使用cookie的封装函数写一个七天免登陆

代码如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		用户名:<input type="text" /><br>
		密码:<input type="password" /><br>
		<label><input type="checkbox"/>七天免登陆</label><br>
		<input type="button" value="登录" />
		<script type="text/javascript">
			//获取input标签数组节点
			var aInput = document.getElementsByTagName("input");
			//如果获取cookie成功,将标签数组中的元素的value值设置为cookie里保存的值
			if(getCookie("username")){				
				aInput[0].value = getCookie("username");
				aInput[1].value = getCookie("password");
			}
			//点击登录按钮时,如果选择了七天免登录,则将该变量的有效时间设置为7天
			aInput[3].onclick = function(){
				var username = aInput[0].value;
				var password = aInput[1].value;
				if(aInput[2].checked){
					setCookie("username",username,7);
					setCookie("password",password,7);
				}
			}
			
			function setCookie(name,value,day){
				var oDate = new Date();
				oDate.setDate(oDate.getDate()+ day);
				//将cookie中name的值赋值为value,在cookie中保存该变量的时间值设为oDate
				document.cookie = name + "=" + value + ";expires=" + oDate;
			}
			
			function getCookie(name){
				var str = document.cookie;
				var arr = str.split("; ");
				//用分割的方法通过name获取name对应的value,最后返回
				for(var i=0;i<arr.length;i++){
					var arr1 = arr[i].split("=");
					if(arr1[0] == name){
						return arr1[1];
					}
				}
			}
			function removeCookie(name){
				//删除cookie中的变量就是将保存的时间设置为-1
				setCookie(name,1,-1);
			}
		</script>
		
	</body>
</html>

结果显示如下:
在这里插入图片描述
如果点击登录时,将七天免登录勾上,则下次刷新页面时,仍然保留上次的用户名和密码。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不愿意做鱼的小鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值