您所在的位置: 首页>>读书频道>>设计开发>>.Net系列>>

4.3.2 Cookie的使用

http://book.51cto.com  2008-01-11 12:24  强锋科技 顼宇峰 马军编著  清华大学出版社  我要评论(0)

4.3.2  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"这是一个字典"                            '输出这是一个字典
end if
%

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

图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域属性。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
上一篇: 4.3.1 Cookie的设置 下一篇: 4.4 本 章 小 结
专题:ASP.NET 2.0基础开发指南
微软的Ajax:Atlas(ASP.net AJAX)
ASP.NET开发教程
ASP实用开发教程
深入Vista应用程序开发
 
 验证码: (点击刷新验证码)   匿名发表
  • Visual C++ 完全自学宝典

  • 作者:强锋科技,朱洪波
  • Visual C++ 6.0是微软公司为程序人员提供的Visual Studio 6.0工具套件中的重要组成部分。本书由浅入深地介绍使用Visual C++ 6.0..
Copyright©2005-2008 51CTO.COM 版权所有