概念
cookie是存储于访问者计算机中的变量
cookie是浏览器提供的一种机制
可以由JavaScript对其进行控制(设置、读取、删除)
特性
cookie可以实现跨页面全局变量
cookie可以跨越同域名下的多个网页,但不能跨越多个域名使用
同一个网站中所有页面共享一套cookie
可以设置有效期限
存储空间只有4KB左右
优势
cookie机制将信息存储于用户硬盘,因此可以作为跨页面全局变量,这是它最大的一个优点
常用场合:(1)保存用户登录状态;(2)跟踪用户行为.等等
缺点
(1)cookie可能被禁用;
(2)cookie与浏览器相关,不能互相访问;
(3)cookie可能被用户删除;
(4)cookie安全性不够高;
(5)cookie存储空间很小(只有4KB左右)
Cookie设置
每个cookie都是一个 名/值 对,(key=value)格式的字符串
例如: document.cookie="user1=YY";
如果要改变一个cookie的值,只需重新赋值
例如: document.cookie="user1=QQ";
设置有效期:
var dates=new Date();
dates.setDate(dates.getDate()+3); //按天数设置
document.cookie="user1=YY; expires="+dates;
读取cookie
document.cookie="user1=YY";
document.cookie="user2=MM";
var cookies=document.cookie;
alert(cookies);
返回:"user1=YY; user2=MM"
只能够一次获取所有的cookie值
用户必须自己解析这个字符串,来获取指定的cookie值
split() 方法用于把一个字符串分割成字符串数组
删除cookie
cookie过期会自动消失
要删除一个cookie,可将其有效期设为一个过去的时间
例如:
var date=new Date();
dates.setDate(dates.getDate()-1);
document.cookie="user1=YY; expires="+dates;
cookie值编码处理
在cookie 的名或值中不能使用分号(;)、逗号(,)、
等号(=)以及空格等特殊符号。在cookie的名中做到这点很容易,但要保存的值是不确定的。
用escape( )函数进行编码,它能将一些特殊符号使用十六进制表示,从而可以存储于cookie值中
当使用escape( )编码后,在取出值以后需要使用unescape( )进行解码才能得到原来的cookie值。
function setcookie(key,value,day){
//创建时间对象 设置cookie过期时间
var date=new Date();
date.setDate(date.getDate()+day);
//设置cookie
document.cookie=key+"="+escape(value)+";expires="+date;
}
function getcookie(key){
var coo=unescape(document.cookie);
//split 是通过查找一个字符 然后把前面和后面的内容组合成一个数组
var arr=coo.split("; ");
//[user1=xiaoming,user2=xiaoli]
for(i=0;i<coo.length;i++){
var arr2=arr[i].split("=")
if(arr2[0]==key){
return arr2[1];
}
}
}
function removecookie (key){
setcookie(key,"0",-1); //在当前时间里减1天
}
查看已设置的cookie

网友评论