我们知道Cookie是记录访问你站点的用户的信息,它驻留在用户的硬盘上,如果该用户再次返回你的站点,则该cookie就会被一起发回到你的服务器中,便于你统计和处理重复到访者的信息。在IE4和NS4两个浏览器中,都提供了对Cookie的支持,并且允许我们用JavaScript或者VBScript去操作它们。
为了简单了解一下Cookie读写的原理,请看以下例子。
写Cookie:
<script>
functionsetCookie()
//建立设定Cookie的函数
{varthe_visits=1;
//初始化VISIT,即访问次数为1
varthe_cookie="3Ware=uservisits:"
+escape(the_visits);
//加入自己的标识符,并用escape函数对Cookie编码
document.cookie=the_cookie;//写入Cookie
}
</script>
----这样,将生成一个字符串3Ware=uservisits:1,就是把一个名为3Ware的Cookie保存到硬盘里,该Cookie的值就是uservisits:1。当我们读Cookie的时候,只需寻找名字为3Ware的Cookie,然后用unescape解码,读出访问次数。
读Cookie:
<script>
functionreadCookie()
{varthe_cookie=document.cookie;
//获得已写的Cookie值
varbroken_cookie=the_cookie.split(":");
//找出分隔符
varthe_visits=broken_cookie[1];
//读出分隔符后一部分
varthe_visits=unescape(the_visits);
//用unescape函数对Cookie解码
document.writeln("Yourvisitsis:"
+the_visits);//写出访问次数
}
</script>
这样,将生成一个字符串3Ware=uservisits:1,就是把一个名为3Ware的Cookie保存到硬盘里,该Cookie的值就是uservisits:1。当我们读Cookie的时候,只需寻找名字为3Ware的Cookie,然后用unescape解码,读出访问次数。
读Cookie:
<script>
functionreadCookie()
{varthe_cookie=document.cookie;
//获得已写的Cookie值
varbroken_cookie=the_cookie.split(":");
//找出分隔符
varthe_visits=broken_cookie[1];
//读出分隔符后一部分
varthe_visits=unescape(the_visits);
//用unescape函数对Cookie解码
document.writeln("Yourvisitsis:"
+the_visits);//写出访问次数
}
</script>
最后在网页中加入“<script>setCookie();readCookie();</script>”就能记住访问的次数了。
但,这个只是基本的原理,实际操作还涉及到Cookie存放的路径,什么时候失效,它的有效作用域在那里,以及检查访问次数是否存在等问题。考虑到以上问题,实际的程序如下:
<html>
<scriptLanguage="JavaScript">
functionGookieVal(offset)
//获得Cookie解码后的值
{
varendstr=document.cookie.
indexOf(";",offset);
if(endstr==-1)
endstr=document.cookie.length;
returnunescape(document.cookie.
substring(offset,endstr));
}
functionGookie(name)
//获得Cookie的原始值
{vararg=name+"=";
varalen=arg.length;
varclen=document.cookie.length;
vari=0;
while(i<clen)
{
varj=i+alen;
if(document.cookie.
substring(i,j)==arg)
returnGookieVal(j);
i=document.cookie.indexOf("",i)+1;
if(i==0)break;
}
returnnull;
}
functionSookie(name,value)
//设定Cookie值
{varargv=Sookie.arguments;
varargc=Sookie.arguments.length;
varexpires=(argc>2)?argv[2]:null;
varpath=(argc>3)?argv[3]:null;
vardomain=(argc>4)?argv[4]:null;
varsecure=(argc>5)?argv[5]:false;
document.cookie=name+"="+
escape(value)+((expires==null)?
"":(";expires="+expires.toGMTString()))
+((path==null)?"":
(";path="+path))+((domain==null)?""
:(";domain="+domain))
+((secure==true)?";secure":"");
}
functionDookie(name)
{varexp=newDate();
exp.setTime(exp.getTime()-1);
varcval=Gookie(name);
document.cookie=name+"="+cval+";
expires="+exp.toGMTString();
}
</script>
<script>
varexpdate=newDate();
expdate.setTime(expdate.getTime()+
(24*60*60*1000*365));
if(!(visits=Gookie("3wave")))
{visits=1;
Sookie("3wave",visits,expdate,"/",null,false);
document.write("这是您第"+visits+"次光临本站");}
else{visits++;
Sookie("3wave",visits,expdate,"/",null,false);
document.write("您已经第"+visits+"次光临小站");
}
if(visits<2)
document.write(",是小站的新手上路,加油哦。")
if(visits>=2&&visits<4)
document.write(",是小站的初级站友,不错嘛。")
if(visits>=4&&visits<6)
document.write(",是小站的高级站友,很厉害啊!")
if(visits>=6)
document.write(",是小站的支柱,我实在太感动了!")
</script>
</html>
在判断访问次数所表达的句子上,你可以根据网站的风格,改为有自己个性的话语,相信,如果访问者在你的网站上看到这些话,留给他的印象一定很深刻,这样就可以让你的网站更加吸引别人了。