??xml version="1.0" encoding="utf-8" standalone="yes"?>
在其它的一个星期里心好累~生活Q工作L有些不开心的事情Q?br />
岁数在增加,事情p来越多~l婚Q家庭马上要随之而来Q?br />
好想找个墨迹墨迹~可是在这个陌生的城市里,没有大学的朋友,没有贴心的新朋友~~
又不能给自己的女朋友增添烦恼~哎,人生是在for(int i = 1; i != 0;i++){遇到困难Q解军_难}
好想休息休息Q但是~~
stop();
wait();
start();
那么多h都能抗过来,我也能,我有爱我的女朋友Q疼我的家hQ远方的朋友Q近在的同事~
continue;
太长旉没有写些东西了~有机会在把项目中解决的方法写出来
cookie是浏览器提供的一U机Ӟ它将document对象的cookie属性提供给JavaScript。可以由JavaScript对其q行控制Q而ƈ不是JavaScript本n的性质。cookie是存于用L盘的一个文Ӟq个文g通常对应于一个域名,当浏览器再次讉Kq个域名Ӟ便ɘq个cookie可用。因此,cookie可以跨越一个域名下的多个网,但不能跨多个域名用?br>不同的浏览器对cookie的实C不一P但其性质是相同的。例如在Windows 2000以及Windows xp中,cookie文g存储于documents and settings\userName\cookie\文g夹下。通常的命名格式ؓQ?/font>userName@domain.txt?br>cookie机制信息存储于用户盘Q因此可以作为全局变量Q这是它最大的一个优炏V它可以用于以下几种场合?br>保存用户d状态。例如将用户id存储于一个cookie内,q样当用户下ơ访问该面时就不需要重新登录了Q现在很多论坛和C都提供这L功能。cookieq可以设|过期时_当超q时间期限后Qcookie׃自动消失。因此,pȝ往往可以提示用户保持d状态的旉Q常见选项有一个月、三个月、一q等?br>
跟踪用户行ؓ。例如一个天气预报网站,能够Ҏ用户选择的地区显C当地的天气情况。如果每ơ都需要选择所在地是烦琐的Q当利用了cookie后就会显得很人性化了,pȝ能够C上一ơ访问的地区Q当下次再打开该页面时Q它׃自动昄上次用户所在地区的天气情况。因Z切都是在后台完成Q所以这L面像为某个用h定制的一P使用h非常方便。定刉面。如果网站提供了换肤或更换布局的功能,那么可以使用cookie来记录用L选项Q例如:背景艌Ӏ分辨率{。当用户下次讉KӞ仍然可以保存上一ơ访问的界面风格?br>
创徏购物车。正如在前面的例子中使用cookie来记录用户需要购买的商品一P在结账的时候可以统一提交。例如淘宝网׃用cookie记录了用hl浏览过的商品,方便随时q行比较?br>当然Q上q应用仅仅是cookie能完成的部分应用Q还有更多的功能需要全局变量。cookie的缺点主要集中于安全性和隐私保护。主要包括以下几U:
cookie可能被禁用。当用户非常注重个h隐私保护Ӟ他很可能用览器的cookie功能Q?br>cookie是与览器相关的。这意味着即讉K的是同一个页面,不同览器之间所保存的cookie也是不能互相讉K的;
cookie可能被删除。因为每个cookie都是盘上的一个文Ӟ因此很有可能被用户删除;
cookie安全性不够高。所有的cookie都是以纯文本的Ş式记录于文g中,因此如果要保存用户名密码{信息时Q最好事先经q加密处理?br>讄cookie
每个cookie都是一个名/值对Q可以把下面q样一个字W串赋值给document.cookieQ?br>document.cookie="userId=828";
如果要一ơ存储多个名/值对Q可以用分号加I格Q? Q隔开Q例如:
document.cookie="userId=828; userName=hulk";
在cookie的名或g不能使用分号Q?Q、逗号Q?Q、等P=Q以及空根{在cookie的名中做到这点很ҎQ但要保存的值是不确定的。如何来存储q些值呢Q方法是用escape()函数q行~码Q它能将一些特D符号用十六进制表C,例如I格会~码?#8220;20%”Q从而可以存储于cookiegQ而且使用此种Ҏq可以避免中文ؕ码的出现。例如:
document.cookie="str="+escape("I love ajax");
相当于:
document.cookie="str=I%20love%20ajax";
当用escape()~码后,在取出g后需要用unescape()q行解码才能得到原来的cookie倹{?br>管document.cookie看上d像一个属性,可以赋不同的倹{但它和一般的属性不一P改变它的赋值ƈ不意味着丢失原来的|例如q箋执行下面两条语句Q?br>document.cookie="userId=828";
document.cookie="userName=hulk";
事实上,览器就是按照这L方式来设|cookie的,如果要改变一个cookie的|只需重新赋|例如Q?br>document.cookie="userId=929";
q样将名ؓuserId的cookieD|ؓ?29?/font>
获取cookie的?br>下面介绍如何获取cookie的倹{cookie的值可以由document.cookie直接获得Q?br>var strCookie=document.cookie;
q将获得以分号隔开的多个名/值对所l成的字W串Q这些名/值对包括了该域名下的所有cookie。例如:
<script language="JavaScript" type="text/javascript">
<!--
document.cookie="userId=828";
document.cookie="userName=hulk";
var strCookie=document.cookie;
alert(strCookie);
//-->
</script>
?.1昄了输出的cookie倹{由此可见,只能够一ơ获取所有的cookie|而不能指定cookie名称来获得指定的|q正是处理cookie值最ȝ的一部分。用户必自己分析这个字W串Q来获取指定的cookie|例如Q要获取userId的|可以q样实现Q?br><script language="JavaScript" type="text/javascript">
<!--
//讄两个cookie
document.cookie="userId=828";
document.cookie="userName=hulk";
//获取cookie字符?br>var strCookie=document.cookie;
//多cookie切割为多个名/值对
var arrCookie=strCookie.split("; ");
var userId;
//遍历cookie数组Q处理每个cookie?br>for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split("=");
//扑ֈ名称为userId的cookieQƈq回它的?br> if("userId"==arr[0]){
userId=arr[1];
break;
}
}
alert(userId);
//-->
</script>
q样得C单个cookie的?/font>
用类似的ҎQ可以获取一个或多个cookie的|其主要的技巧仍然是字符串和数组的相x作?/font>
lcookie讄l止日期
到现在ؓ止,所有的cookie都是单会话cookieQ即览器关闭后q些cookie会丢失Q事实上q些cookie仅仅是存储在内存中,而没有徏立相应的盘文g?br>在实际开发中Qcookie常常需要长期保存,例如保存用户d的状态。这可以用下面的选项来实玎ͼ
document.cookie="userId=828; expires=GMT_String";
其中GMT_String是以GMT格式表示的时间字W串Q这条语句就是将userIdq个cookie讄为GMT_String表示的过期时_过q个旉Qcookie消失,不可讉K。例如:如果要将cookie讄?0天后q期Q可以这样实玎ͼ
<script language="JavaScript" type="text/javascript">
<!--
//获取当前旉
var date=new Date();
var expireDays=10;
//date讄?0天以后的旉
date.setTime(date.getTime()+expireDays*24*3600*1000);
//userId和userName两个cookie讄?0天后q期
document.cookie="userId=828; userName=hulk; expire="+date.toGMTString();
//-->
</script>
删除cookie
Z删除一个cookieQ可以将其过期时间设定ؓ一个过ȝ旉Q例如:
<script language="JavaScript" type="text/javascript">
<!--
//获取当前旉
var date=new Date();
//date讄ȝ旉
date.setTime(date.getTime()-10000);
//userIdq个cookie删除
document.cookie="userId=828; expire="+date.toGMTString();
//-->
</script>
指定可访问cookie的\?br>默认情况下,如果在某个页面创Z一个cookieQ那么该面所在目录中的其他页面也可以讉K该cookie。如果这个目录下q有子目录,则在子目录中也可以访问。例如在www.xxxx.com/html/a.html中所创徏的cookieQ可以被www.xxxx.com/html/b.html?/font>www.xxx.com/ html/ some/c.html所讉KQ但不能?/font>www.xxxx.com/d.html讉K?br>Z控制cookie可以讉K的目录,需要用path参数讄cookieQ语法如下:
document.cookie="name=value; path=cookieDir";
其中cookieDir表示可访问cookie的目录。例如:
document.cookie="userId=320; path=/shop";
pC当前cookie仅能在shop目录下用?br>如果要cookie在整个网站下可用Q可以将cookie_dir指定为根目录Q例如:
document.cookie="userId=320; path=/";
指定可访问cookie的主机名
和\径类|L名是指同一个域下的不同LQ例如:www.google.com和gmail.google.com是两个不同的主机名。默认情况下Q一个主Z创徏的cookie在另一个主Z是不能被讉K的,但可以通过domain参数来实现对其的控制Q其语法格式为:
document.cookie="name=value; domain=cookieDomain";
以googleZQ要实现跨主问,可以写ؓQ?br>document.cookie="name=value;domain=.google.com";
q样Q所有google.com下的L都可以访问该cookie?br>
l合CZQ构造通用的cookie处理函数
cookie的处理过E比较复杂,q具有一定的怼性。因此可以定义几个函数来完成cookie的通用操作Q从而实C码的复用。下面列Z常用的cookie操作及其函数实现?br>1Q添加一个cookieQaddCookie(name,value,expireHours)
该函数接?个参敎ͼcookie名称Qcookie|以及在多小时后q期。这里约定expireHours?时不讑֮q期旉Q即当浏览器关闭时cookie自动消失。该函数实现如下Q?br><script language="JavaScript" type="text/javascript">
<!--
function addCookie(name,value,expireHours){
var cookieString=name+"="+escape(value);
//判断是否讄q期旉
if(expireHours>0){
var date=new Date();
date.setTime(date.getTime+expireHours*3600*1000);
cookieString=cookieString+"; expire="+date.toGMTString();
}
document.cookie=cookieString;
}
//-->
</script>
2Q获取指定名U的cookie|getCookie(name)
该函数返回名UCؓname的cookie|如果不存在则q回I,其实现如下:
<script language="JavaScript" type="text/javascript">
<!--
function getCookie(name){
var strCookie=document.cookie;
var arrCookie=strCookie.split("; ");
for(var i=0;i<arrCookie.length;i++){
var arr=arrCookie[i].split("=");
if(arr[0]==name)return arr[1];
}
return "";
}
//-->
</script>
3Q删除指定名U的cookieQdeleteCookie(name)
该函数可以删除指定名U的cookieQ其实现如下Q?br><script language="JavaScript" type="text/javascript">
<!--
function deleteCookie(name){
var date=new Date();
date.setTime(date.getTime()-10000);
document.cookie=name+"=v; expire="+date.toGMTString();
}
//-->
</script>