在站点的页面之间传递参数的通常方法是通过URL查询字符串,或者通过在表单中设置隐藏域的方法。另外的两种流行方法是使用cookie,或者使用ASP Session变量。在这篇文章里面,将讨论如何使用cookie和session变量来管理用户对站点页面的访问权限。 使用cookie来跟踪访问者 跟踪访问者访问页面的传统方法是使用cookies,cookie就是存储在用户一端计算机上的一个文本文件,当用户访问相应的域时,这些文件就被送到服务器上。做为基本应用,cookie被当作用户再次访问站点时验证和区分注册用户的手段,而不需要他们再次输入注册信息。同样,可以使用cookie保存用户上一次访问站点的一些设置。 在ASP中使用cookie非常简单,可以使用Request对象的Cookies集合取回所有保存在客户端的cookie数值,然后使用Response对象的Cookies集合创建或者修改cookie数值,并保存到客户端。 象ASP中许多对象一样,一个cookie不仅可以是集合中的一员,还可以自成为集合。创建一个单一cookie非常简单,代码如下: Response.Cookies ("item-name") = "item-value" 创建一个包含多个数值的cookie,代码是: Response.Cookies ("item-name")("sub-item-name") = "sub-item-value" 设置cookie的域属性、路径属性以及使用到期时间,相关代码是: Response.Cookies ("item-name").domain = "domain-url" Response.Cookies ("item-name").path = "virtual-path" Response.Cookies ("item-name").expires = #date# 下面的例子在浏览器端创建了cookie选择,注意:必须在浏览器输出任何信息前创建cookie,因为它们是HTTP headers的一部分: 〈 % Response.Cookies("SimpleCookie") = "SimpleExample" Response.Cookies("CompoundCookie")("Value1") = "Value1" Response.Cookies("CompoundCookie")("Value2") = "Value2" Response.Cookies("TimedCookie") = "TimedExample" Response.Cookies("TimedCookie").path = "/" apply to our entire site Response.Cookies("TimedCookie").expires = #10/10/2005# % 〉 〈 HTML 〉 〈 BODY 〉 ... 〈 /BODY 〉 〈 /HTML 〉 读取cookies 通过使用request对象并遍历cookie集合,就可以读取所有cookie的全部内容。如果有些cookie含有多个数值,就通过遍历那个cookie自身集合来输出。 〈 HTML 〉 〈 HEAD 〉〈 TITLE 〉Reading the Cookie Collection〈 /TITLE 〉〈 /HEAD 〉 〈 BODY 〉 〈 B 〉The contents of your Cookies are:〈 /B 〉〈 P 〉 〈 TABLE CELLPADDING=0 CELLSPACING=0 〉 〈 % For Each Item in Request.Cookies If Request.Cookies(Item).HasKeys Then use another For...Each to iterate this collection For Each ItemKey in Request.Cookies(Item) Response.Write Item & "(" & ItemKey & ") = " _ & Request.Cookies(Item)(ItemKey) & "〈 BR 〉" Next Else print the complete cookie string as normal Response.Write Item & "=" & Request.Cookies(Item) & "〈 BR 〉" End If Next % 〉〈 /TABLE 〉 〈 /BODY 〉 〈 /HTML 〉 下图显示了执行上面代码的结果。但是,当你现在关闭浏览器并重新打开时,再运行这些代码,除了TimeCookie以为的所有数值都消失了。这是因为只有TimeCookie设置了“使用到期时间”,其他的当浏览器关闭时就自动消失了。 |