|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
在站点的页面之间传递参数的通常方式是通过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设置了“使用到期时间”,其他的当浏览器关闭时就自动消失了。 这里要讨论使用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并从中取回用户名和口令: ... If (Session("UserName") <> "alexhomer") _ Or (Session("Password") <> "secret") Then Response.Redirect "default.asp?nogood=yes&v1=" & Session("UserName") End If ... 返回类别: 教程 上一教程: 关于处理GET方法提交的含有特别字符的参数 下一教程: 在ASP程序中访问ACCESS数据库 您可以阅读与"ASP中简易用户访问控制-1"相关的教程: · ASP中简易用户访问控制-2 · 用ASP让用户访问指定页面 · ASP网页访问权的控制 · 用ASP实现WEB页面分用户权限的访问 · 用ASP控制Flash |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |