cookie初级教程代码意思详解

在w3cschool教程中cookie的示例代码感觉每一行都不是很懂,所以单独拿出来梳理一下。

1、cookie是什么

当你浏览一个网站的时候,网站会默认你是第一次来访。但是有了cookie,你的浏览器就会告诉那个网站,你看我已经来过了,我还带着你上次送给我的曲奇呢!所以,cookie是帮助记录你的浏览信息的一种工具。Cookie可以记录你浏览网页时的语言,你的电子邮箱地址还有密码,这样你就不用每次都把它们重新输入一遍了。所以cookie是一种很方便的工具。

2、预备知识

1)cookie是一组字符串,里面可以有很多“;”,例如:"username=amosli; ASPSESSIONIDQAAADBDD=GGIJNHCDKGNFEGJIIFDNNION; __utma=119627022.986713705.1387205055.1387205055.1387208465.2; __utmb=119627022.3.10.1387208465; __utmc=119627022; __utmz=119627022.1387208465.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided)",但是cookie保存在系统中的时候是“cookie名1 = cookie值; cookie名2= cookie值”这样的方式来保存的,每个cookie用“;”隔开

2)document.cookie是返回包含所有cookie的字符串

3、教程代码解释

<html>
<head>
<script type="text/javascript">
function getCookie(c_name)
{
if (document.cookie.length>0) //如果cookie的值长度大于零则执行下面的代码 

c_start=document.cookie.indexOf(c_name + "=")//取得这个cookie名在整个cookie中的位置,加“=”号:取cookie名加上等于号的位置
if (c_start!=-1)

c_start=c_start + c_name.length+1 //是用先前取得的位置加上cookie名的长度再加1,就是把位置确定在这个cookie名的“=”符号的后面。
c_end=document.cookie.indexOf(";",c_start) //获取指定cookie名字的值的结束位置,从开始位置开始取;号的位置,因为分号是分隔符 
if (c_end==-1) c_end=document.cookie.length//如果结束位置为-1则表示这个cookie是最后一个没有;所以取最长值
return unescape(document.cookie.substring(c_start,c_end))//返回解码后的cookie值,unescape代表解码

}
return ""
}

function setCookie(c_name,value,expiredays)//cookie的名字(c_name),有效期(expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)//设置过期的日期=当前日期+有效时间长度 
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : "; expires="+exdate.toGMTString()) 
}

function checkCookie()
{
username=getCookie('username')
if (username!=null && username!="")
  {alert('Welcome again '+username+'!')}
else 
  {
  username=prompt('Please enter your name:',"")
  if (username!=null && username!="")
    {
    setCookie('username',username,365)
    }
  }
}
</script>
</head>
<body onLoad="checkCookie()">
</body>
</html>

4、就到这里啦,希望对你有帮助^^

猜你喜欢

转载自blog.csdn.net/qq_40996041/article/details/83473130
今日推荐