cookie的封装及应用

news/2024/7/3 20:13:08

最原始代码

var person = {
				name: "小明",
				age: 18,
				sex: '男'
			}

			//直接把整个对象当做参数传入
			function showSelf(obj){
				alert("我叫" + obj.name + ', 今年' + obj.age + "岁,是" + obj.sex + "的");
			}

			// showSelf(person);
			showSelf({
				name: "小明",
				age: 18,
				sex: '男'
			})
*/
			/*function showSelf(name, age, sex){
				alert("我叫" + name + ', 今年' + age + "岁,是" + sex + "的");
			}

			showSelf(person.name, person.age, person.sex);

用JavaScript设置、读取和删除并不是特别的方便,我们可以封装函数方便调用。
用来封装的三个函数方法
setCookie() 用来设置cookie
getCookie(name) 传入name,返回value
removeCookie() 用来删除cookie

			{
				expires: 7,     //失效时间为7天
				path: path,    //设置限制访问路径
				domain: domain,     //设置访问的域名
				secure: true/false          //设置安全设置
			}

封装cookie

          function setCookie(name, value, obj){
				//将name和value编码去存储
				var cookieStr = encodeURIComponent(name) + "=" + encodeURIComponent(value);
				if(obj){
					if(obj.expires){
						cookieStr += ";expires=" + numOfDate(obj.expires);
					}
					if(obj.path){
						cookieStr += ";path=" + obj.path;
					}
					if(obj.domain){
						cookieStr += ";domain=" + obj.domain;
					}
					if(obj.secure){
						cookieStr += ";secure";
					}
				}
				//将cookie设置成功
				document.cookie = cookieStr;
			}

			function numOfDate(n){
				var d = new Date();
				var day = d.getDate();
				d.setDate(day + n);
				return d;
			}

			setCookie("变种人", "金刚狼", {
				expires: 7
			});
			setCookie("赛亚人", "孙悟空", {
				expires: 30
			});
			setCookie("超级英雄", "海王", {
				expires: 1000
			});

			//解码输出
			/*alert(decodeURIComponent(document.cookie))
			removeCookie("赛亚人");
			alert(decodeURIComponent(document.cookie))*/

			function removeCookie(name){
				document.cookie = encodeURIComponent(name) + "=;expires=" + new Date(0);
			}

			/*
				变种人=金刚狼; 赛亚人=孙悟空; 超级英雄=海王 

				传入对应的name,返回对应的value
			*/
			//重点
			function getCookie(name){
				var cookieStr = decodeURIComponent(document.cookie);
				var start = cookieStr.indexOf(name);
				if(start == -1){
					return null;
				}else{
					//找从start开始,遇到的第一个分号
					var end = cookieStr.indexOf(";", start);
					if(end == -1){
						end = cookieStr.length;
					}
				}
				//提取指定范围的字符
				var subStr = cookieStr.substring(start, end);
				var arr = subStr.split("=");
				return arr[1];
			}

			alert(getCookie("变种人"));
			alert(getCookie("赛亚人"));
			alert(getCookie("超级英雄"));

			removeCookie("赛亚人");

			alert(getCookie("赛亚人"));

写一个自动登录的项目
项目要求:输入用户名和密码,点击登录按钮,显示登陆成功。如果登陆过,则cookie里存储着用户的用户名和密码,显示已经登陆过。

<body>
		<div id = 'div1'>
			<!-- 不要用form表单 -->
			<input id = 'username' type="text" name = 'username' placeholder="请输入用户名" />
			<input id = 'password' type="text" name = 'password' placeholder="请输入密码" />
			<button id = 'btn1'>登录</button>
		</div>
	</body>

script代码

<script src = 'tool.js'></script>
		<script>
			window.onload = function(){
				//如果登陆过,cookie存储着用户名和密码
				//页面加载完成以后,判断之前是否登录, 直接看cookie中是否有数据
				if(getCookie("username")){
					document.write("已经登录,用户名是:" + getCookie("username"));
				}else{
					var oBtn = document.getElementById("btn1");
					var oUsername = document.getElementById("username");
					var oPassword = document.getElementById("password");

					oBtn.onclick = function(){
						alert("登录成功");
						//将登录的用户名和密码,存储在cookie里
						setCookie("username", oUsername.value, {
							expires: 7
						})
						setCookie("password", oPassword.value, {
							expires: 7
						})
						document.write("已经登录,用户名是:" + getCookie("username"));
					}
				}
			}
		</script>

结果显示

输入用户名和密码,点击登录,显示登陆成功。
在这里插入图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/2502363.html

相关文章

PHP教程:php导入到excel-支持utf8和gbk两种编码

php导入到excel-支持utf8和gbk两种编码 php导入到excel乱码是因为utf8编码在xp系统不支持所有utf8编码转码一下就完美解决了 utf-8编码案例 <?php header(Content-Type: application/vnd.ms-excel; charsetUTF-8); header(Pragma: public); header(Expires: 0); …

关于面向对象的编程

一、面向对象是什么 面向对象是软件开发的方法&#xff0c;是一种对现实世界理解和抽象的方法&#xff0c;是计算机编程技术发展到一定阶段后的产物&#xff0c;是一种高级的编程思想。 二、面向对象的编程思想 面向过程&#xff1a;只关心数学逻辑。 面向对象&#xff1a;直接…

转一篇 搞笑的

http://www.cnblogs.com/huobazi/articles/2690.aspx转载于:https://www.cnblogs.com/huobazi/archive/2004/03/10/2676.html

SQL Server 中截取日期的日期部分与时间部分

SQL Server 中截取日期的日期部分与时间部分 CONVERT ( data_type [ ( length ) ] , expression [ , style ] )SQL Server 中截取日期的日期部分&#xff1a; select convert(varchar(10),getdate(),120)SQL Server 中截取日期的时间部分&#xff1a; select convert(varchar(8…

考察数据结构——第二部分:队列、堆栈和哈希表[译]

相关文档 考察数据结构——第一部分:数据结构简介 考察数据结构——第三部分&#xff1a;二叉树和BSTs 原文链接&#xff1a;Part 2: The Queue, Stack, and Hashtable 本文是"考察数据结构"系列文章的第二部分&#xff0c;考察了三种研究得最多的数据结构&#xff…

AJAX的封装和提交方式

一、什么是AJAX ajax是一种技术&#xff0c;是用来进行前后端交互的技术。他可以异步的运输数据。可以节省异步的操作、时间、提高用户的体验、减少数据请求、传输数据请求。 异步&#xff1a;非堵塞&#xff0c;前面一个程序是否执行完毕&#xff0c;不影响后面的程序的执行。…

(转)谈谈我对技术发展的一点感悟

转自&#xff1a;小洋&#xff08;燕洋天&#xff09;点击查看原文 随着自己不断的在技术这条路上走着&#xff0c;感悟和体会也是越来越多&#xff01;和大家分享上几点。 1. 懂得越多&#xff0c;发现自己懂得越少 现在回想以前&#xff0c;发现以前的自己确实有点“轻狂…

程序员必知单词、语句、英文缩写汇总

程序员必知单词、语句、英文缩写汇总 综述&#xff1a;便于类&#xff0c;函数命名&#xff0c;工作文档阅读而做的单词积累 一.逻辑编码部分 application 应用程式 应用、应用程序 application framework 应用程式框架、应用框架 应用程序框架 architecture 架构、系统架构 体…