文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
ASP.NET编程中url编码的转换
Asp.net把UTF-8编码转换为GB2312编码
如何用vb.net获取网页源代码2
如何用vb.net获取网页源代码
VB.Net中关于数组赋值
Imports 语句
Imports 语句分析
VB.NET入门--Imports 语句
asp.net连接Access数据库
Asp.net如何连接Access数据库
ASP.NET技巧:access下的分页方案
ASP.net的ACCESS数据分页方案
ASP.NET与ACCESS结合建设网站的经验总..
编译asp.net文件为dll文件
ASP.NET的错误处理机制
ASP.NET 2.0编程小技巧两则
ASP.NET 2.0发送电子邮件全面剖析之二
ASP.NET 2.0中发送电子邮件剖析之一
如何充分利用ASP.NET 2.0预编译
如何改变asp.net项目名称
轻松加密ASP.NET 2.0 Web程序配置信息
Visual Studio.NET常见问题解答
ASP.Net中将图片数据保存到XML文档
ASP.NET中随机数的产生
提高ASP.Net应用程序性能的十大方法
ASP.NET中利用cookies保持客户端信息
ASP.NET热点问题解答14个
用ASP.NET加密Cookie数据(2)
用ASP.NET加密Cookie数据(1)
ASP.NET中在线用户统计


技术教程 -> ASP.NET教程 ->  
ASP.NET中利用cookies保持客户端信息
来源:转载   人气:1579   录入时间:2007-11-8
    
   我当前所吃的东东都固定为食物,所以一点也不惊讶,这一周的主题为cookies。
   
   
   Cookies用于存储特定用户信息,它提供了Web程序中一种有用的方式。多年以来,JavaScript开发人员已经进行了有关cookie的大量工作。同样,ASP.NET通过System.Web空间名称也提供了cookie的访问。虽然你不应该使用cookie来存储一些敏感性的数据,但是,它们是处理锁细数据的一个极好的选择,比如颜色参数选择或者最后一次访问日期。
   
   传递cookies
   cookie是存储在客户端计算机的一个小文件。如果你是一个Windows用户,可以在用户路径中查看Cookies路径,即为Documents And Settings路径。这一路径包含这一文件名称的文本文件:
   
   username @ Web site domain that created the cookie
   
   (用户名称@建立cookie的站点域名)
   
   .NET System.Web空间名称包含三个类,你可以使用它们来处理客户端的Cookies:
   
   HttpCookie:提供一个建立和操作独立HTTP cookies的安全类型的方式。
   
   HttpResponse:Cookies属性允许客户端cookies被操作。
   
   HttpRequest:Cookies属性允许访问客户端操作的cookies。
   
   HttpResponse和HttpRequest对象的Cookies属性将返回一个HttpCookieCollection对象,它包含着,将单独的cookies添加到集合(collection)中,以及从集合(collection)获得一个单独的cookies。
   
   HttpCookie类
   HttpCookie类针对于客户存储之用而建立的单独cookies。一旦HttpCookie对象被建立,你可以将其添加到HttpResponse对象的Cookies属性中。同样的,你可以通过HttpRequest对象访问现有的cookies。HttpCookie类包含以下的公有属性:
   
   Domain(域名):获得或设置与cookie有关的域名,可用于限制特定区域的cookie访问。
   
   Expires(期限):获得或设置cookie的终止日期和时间,你可以将其设置为一个过去的日期以自动终止或者删除cookie。
   
   Names(名称):获得或设置cookie名称。
   
   Path(路径):获得或设置cookie的虚拟路径。这一属性允许你限制cookie范围,也就是说,访问cookie只能限制于一个特定的文件夹或者路径。设置这一属性限制为只能访问特定路径和该路径下的所有文件。
   
   Secure(安全):发信号以表示是否使用Secure Sockets Layer (SSL)来发送cookie值。
   
   Value(值):获得或设置一个单独的cookie值。
   
   Values(信息):返回包含在cookie中的key/value的一个集合。
   
   虽然这些还不是一个最详尽的列表,但它提供了处理cookies所需要的东西。对于这些属性的使用,以下VB.NET范例给予最好的理解:
   
   Dim testCookie As New HttpCookie("LastVisited")
   
   testCookie.Value = DateTime.Now.ToString
   
   testCookie.Expires = DateTime.Now.AddDays(7)
   
   testCookie.Domain = "builder.com"
   
   Response.Cookies.Add(testCookie)
   
   这一代码段建立了一个名为LastVisited的新的cookie,并赋予当前日期和时间的值。同样的,cookie终止期限设置为一个星期,相关的范围为populated。一旦建立对象,通过Response.Cookies对象的Add方法就可以将对象添加到客户端的cookies集合。HttpCookie构造函数中的方法有两种:
   
   HttpCookie objectName = New HttpCookie("cookieName")
   
   HttpCookie objectName = New HttpCookie("cookieName", "cookieValue")
   
   同样,Response对象包含一个SetCookie方法,这一方法可以接受一个HttpCookie对象。
   
   我的cookie在哪里?
   一旦cookies被保存在客户端,有多种不同的方法以提供你访问它们。如果你知道cookie名称,可以使用HttpResponse对象很容易地访问它的值。以下VB.NET行显示了与cookie有关的值:
   
   
   
   
   Response.Write(Request.Cookies("LastVisitied").Value)
   
   
   
   除此之外,可以通过一个HttpCookieCollection对象访问cookies的完整列表。这就使得cookie列表可以用一个for循环来访问。以下C#代码说明了这样的例子:
   
   HttpCookieCollection cookies;
   
   HttpCookie oneCookie;
   
   cookies = Request.Cookies;
   
   string[] cookieArray = cookies.AllKeys;
   
   for (int i=0; I < cookieArray.Length; i++) {
   
   oneCookie = cookies[cookieArray[i]];
   
   Response.Write(oneCookie.Name + " - " + oneCookie.Value);
   
   }
   
   
   
   VB.NET中相应的代码如下:
   
   
   
   Dim i As Integer
   
   Dim oneCookie As HttpCookie
   
   For i = 0 To Request.Cookies.Count - 1
   
   oneCookie = Request.Cookies(i)
   
   Response.Write(oneCookie.Name + " - " + oneCookie.Value)
   
   Next I
   
   稳定也是一个观点
   cookie文件存放在客户端机器,所以你的用户可以任意删除或更改。此外,用户还可以使cookies无效化。基于此原因,请记住不要依赖cookie数据。你应该将重要的信息保存在服务器──特别是一个数据库中。
   
   在一个cookie中存储关键信息被认为是一种低级的程序设计,因为这些信息很容易被泄露,原因是这些信息位于客户机器的一个文件中。在这一点,一种方法就是使用SSL,这是一种可以避免敏感信息的更好方法。
   
   
   
   我可以使用cookies吗?
   用户可以在自己的浏览器上无效化cookie支持。你可以在自己的代码中访问这些设置以决定是否支持cookies。Request对象满足了这一想法,以下VB.NET代码显示了这一过程:
   
   
   
   If Request.Browser.Cookies = True Then
   
   ' 使用cookies
   
   Else
   
   '没有cookie支持
   
   End If
   
   
   
   可以联合代码来使用cookie值。以下C#代码段对cookie支持进行了测试,并相应地将结果显示在一个文本框:
   
   if (Request.Browser.Cookies == true)
   
   {
   
   if (Request.Cookies["LastVisited1"] == null)
   
   {
   
   HttpCookie newCookie = new HttpCookie("LastVisited1",DateTime.Now.ToString());
   
   newCookie.Expires = DateTime.Now.AddYears(1);
   
   Response.Cookies.Add(newCookie);
   
   this.txtName.Text = "Is this your first time?";
   
   } else {
   
   this.txtName.Text = "We haven't seen you since " +
   
    Request.Cookies["LastVisited1"].Value;
   
   } }
   
   
   
   你可以将这一代码段添加到ASP.NET页中的Page_Load事件。
   
   保存数据的另一方式
   ASP.NET提供了保存特定用户数据的多种方法。其中一个老方法就是cookies。对于敏感数据,虽然cookies不是最好的方法,但它是诸如颜色参数选择、最后一次访问日期等亲和力选项(benign items)的最佳选择。虽然这些敏感数据重要,但当用户的计算机崩溃时数据丢失,这也不是世界的末日。
   




Copyright(C)2007-2021 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987