Cookie的使用

1.使用Cookie字典

Cookie字典就是在客户端存储的一张二维关系表,该表的名字是定义的Cookie字典的名字。引用同一个 字典中的不同变量所设置的key值,不同的key值对应不同的变量。因此字典的名字和每个key值构成了一个完整的Cookie变量名。定义一个字典并指 定其中所包含的变量为以下格式:

Response.Cookies(cookie)(key)=value

key被称为关键字,用来标识同一个字典中不同的变量,如下面的程序中定义了一个客户信息的字典customer,并在这个字典中定义了若干个与customer相关的变量。

<%

Response.Cookies("Customer")("name")="wang"                      '记录用户名

Response.Cookies("Customer")("age")="24"                           '记录用户年龄

Response.Cookies("Customer")("mail")=xxx@mail.com                  '记录用户电子邮箱

%>

在上面的字典customer中,定义了3个变量:name、age和mail,就像数据库中表上的不同字段,每个Cookie变量的值相当于每个字段的值。

当分不清一个Cookie是一个字典还是一个变量时,可以用haskeys属性来判断。

<%

if not response.cookies("customer").haskeys then                                '判断haskeys属性

response.write"这不是一个字典"                             '输出这不是一个字典

else

response.write"这是一个字典"                               '输出这是一个字典

文本框:
图4-11  这是一个字典end if

%>

其运行结果如图4-11所示。

对于一个字典,可以通过循环来引用其中所包含的所有变量及其值。以下程序将customer字典中的变量全部 置空。

<%

if not response.cookies("customer").haskeys then

  response.cookies("customer")=" "

else

  for each key in response.cookies("customer")

    response.cookies("customer")(key)=" "

  next

end if

%>

2.读取Cookie值

Cookie是需要读取Cookie的名称。Key选项的意义与定义Cookie相同,表示某个Cookie 字典中的关键字。属性attribute只有一个HasKeys的值,用来判断一个Cookie是否为字典,用法与定义Cookie时使用的完全相同。 Request对象负责从客户端把Cookie读取出来。Request读取Cookie的一般格式为:

Request.Cookies(cookie)[(key)|.attribute]

Cookie字典中的变量和值,可以通过引用关键字来读取。若一个字典不进行关键字引用,而直接使用 Request.Cookies(cookie),那么所有的关键字都将作为返回值。下面的例题是一个Cookie字典wang有两个关键字age和 sex,则使用Request.Cookies(wang)返回:age=24&sex=male。

<%

Request.Cookies("wang")("age")=24

Request.Cookies("wang")("sex")="male"

Request.write request.cookies("wang")

%>

当Cookie在字典wang中,先定义关键字age,后定义sex,但是在采用这种方法读取Cookie 时,先读sex关键字,后读age关键字,顺序是颠倒过来的。若客户端返回了两个相同名称的Cookie,那么Request对象将只读取其中目录层次比 较深的那个Cookie。例如,两个名称都是boy,其中的一个Cookie的path属性设置为wwwroot/asp/,而另一个相同名字的 Cookie的path属性设置为wwwroot/asp/ asppages/,那么最终Request对象读取到的Cookie将是后者。

3.实例应用

当用户在上网的时候,经常会发现网站上有一个计数器,它会提示你是第几位来此网站的。要制作网站计数器,首先 在用户第1次访问该站点时,站点使用Cookie技术在客户端记录下客户端的机器名,然后写入一个Cookie字典,并设置另外一个记录访问次数的关键 字,把用户的访问次数设置为1,也写入一个Cookie字典。然后在用户以后的访问中,服务器读取用户机器上的Cookie,判断出机器名,把访问次数加 1后显示在浏览器中,并且修改Cookie。具体代码如下:

<%

dim servername

dim number

servername=request.cookies("customer")("servername")

number=request.cookies("customer")("number")

if servername=" " then

servername= request.servervariables("server_name")

response.cookies("customer")("servername")=servername '记录服务器名称

response.cookies("customer")("number")=1                '记录第一次访问

response.cookies("customer").expires=#Oct 1,2010#                '记录日期

response.cookies("customer").domain=http://www.xxx.com          '记录网址

else

response.cookies("customer") ("number")=number+1          '记录第number+1访问

response.write"欢迎你"&servername&",这是你的第"&number&"次访问。"

%>

程序的运行结果如图4-12所示。

图4-12  计数器

当第1次访问时,在客户端并没有要求customer这个Cookie字典,因此使用该字典获取的两个参数 servername和number的值都为空。那就对该字典进行初始化,当再次连接时客户端已经有了这个字典。为了能长期监视该客户端的访问情况,把这 个字典的生命期限设置为2010年10月1日。为了防止其他网站将该Cookie覆盖,还应当设置该Cookie字典的domain域属性。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值