使用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配置了“使用到期时间”,其他的当浏览器关闭时就自动消失了。
在cookie中保存登录信息
这里要讨论使用cookie保存登录信息的问题,并且看看在ASP页面间如何利用cookie数值。但是请记住:cookie仅仅被送往前次访问时所在路径相同的站点,也就是说cookie在初始配置时的环境中才能生效。假如没有配置cookie的path属性,他的数值默认就是当初创建时所在的虚拟路径。
这里有个例子描述保存登录信息到cookie中。由于没有配置“使用到期时间”,所以当前用户会话结束后cookie也就不存在了。
...
Response.Cookies("User")("v1") = "〈 % = Request("v1") % 〉" 'username Response.Cookies("User")("v2") = "〈 % = Request("v2") % 〉" 'password Response.Cookies("User").path = "/adminstuff" 'apply to admin pages
...
现在就能够在用户请求的每一个页面中寻找这个cookie了,假如没有找到,就重定向用户到登录页面:
...
If (Request.Cookies("User")("v1") 〈 〉 "alexhomer") _
Or (Request.Cookies("User")("v2") 〈 〉 "secret") Then
Response.Redirect "default.asp?nogood=yes&v1=" & Request.Cookies("User")("v1")
End If
...
使用ASP Session变量跟踪访问者
除了使用cookie,我们还能够充分利用ASP中的Session变量。我们能够在用户Session变量中保存数值,只要session变量还是激活的,这些保存的数值就能够被利用。通常,这些session变量将在用户最后一次请求页面后保持20分钟的时间,除非我们使用Session.Abandon方法明确地释放这些session变量。同时,能够使用ASP脚本中的Session.Timeout属性来配置这个过期时间。
使用session变量跟踪访问者要比使用cookie更安全,因为用户的session变量的内容不会随着页面请求而在网络上传递。除了初始登录以外,用户名和口令(或任何数值)一直保存在服务器上。我们能够区别和认证访问者,将他们的登录信息保存在他们自己的Session对象中。当需要对访问者进行验证时,就从他们自己的Session对象中取会这些信息。举个例子,在用户登录后提交的页面中,加入如下代码:
...
Session("UserName") = Request("v1") 'username from logon dialog form
Session("Password") = Request("v2") 'password from logon dialog form
...
然后,当需要认证访问者时,就找到这些cookie并从中取回用户名和口令:
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




