详谈在ASP中设置Cookie的失效期

风清扬斈 13年前 (2006-11-18) 信息科技 5869 0
详谈在ASP中设置Cookie的失效期   
  中国矿业大学     计算机学院   王挺   


    
  在ASP技术中,Cookie是Response的唯一的一个集合,是Web服务器在用户的浏览器中用来代表用户的令牌。当同一浏览器又一次请求同一Cookie设定的页面时,它将从用户端把上一次从Web服务器中收到的Cookie发送回Web服务器进行数据处理。在实际应用中,Cookie一直起着相当重要的作用,设置Cookie的属性和它的失效期在Cookie的使用中扮演着举足轻重的角色。特别像在一些很重要的场合,比如说在线投票、电子商务中,设置Cookie以及它的失效期是很重要的。   
    
  要设置Cookie的失效期可以使用Expires属性。Expires是期满、终止、失效的意思。该属性是只写的,用于设置Cookie的期限,指定Cookie的失效期。没有指定期限的Cookie只能通过浏览器所提供的Cookies功能,将信息暂时存放在用户端,而不能以文件的形式存储到用户的计算机上,当用户关闭该浏览器时,此Cookie自动失效。所以无失效期的Cookie不能跟踪用户的信息。要延长Cookie的生命周期,跟踪用户来访信息,就必须用Expires属性来设置Cookie的失效时间。   
    
  在讨论设置Expires属性之前,首先回顾一下ASP技术中表示时间的几个关键字:time   、date   和now。这样做的好处是有利于大家进一步的学习。下面先请大家看一段程序以及它的运行结果:     
    
    
      
    
  <html>   
    
  <head>   
    
  <title>时间测试</title>   
    
  </head>   
    
  <body>   
    
  time:     <%=time%><p>   
    
  date:     <%=date%><p>   
    
  now:     <%=now%><p>   
    
  </body>   
    
  </html>   
    
    
    
      
    
  这三个关键字都是代表Web服务器的系统时间的。我们通过上面的程序和运行结果,可以很快地、很清楚地了解这三个关键字和它们之间的区别:   
    
  1.                   time   :主要用于表示时间,包括时、分、秒,不表示日期   
    
  2.                   date   :主要用于表示日期,包括年、月、日,不表示时间   
    
  3.                   now   :同时表示时间(时分秒)和日期(年月日)   
    
  有了以上的基础知识,现在可以谈一下设置Expires的三大类方法:   
    
  1.     dateadd法   
  1)将期限设置为当前日期后的第N天的0时0分0秒   
  Response.Cookies(“LastView”).Expires=dateadd(“d”,N,date)   
  2)将期限设置为当前日期后的第N月的同一天的0时0分0秒   
  Response.Cookies(“LastView”).Expires=dateadd(“m”,N,date)   
  3)将期限设置到当前时间后的第N天的该时该分该秒   
  Response.Cookies(“LastView”).Expires=dateadd(“d”,N,now)   
  4)将期限设置到当前时间后的第N+M天的该时该分该秒   
  Response.Cookies(“LastView”).Expires=dateadd(“d”,N,now+M)   
  5)将期限设置到当前时间后的第N月的该时该分该秒   
  Response.Cookies(“LastView”).Expires=dateadd(“m”,N,now)   
  6)将期限设置到当前时间后的第N月的同一日后的第M天的该时该分该秒   
  Response.Cookies(“LastView”).Expires=dateadd(“m”,N,now+M)   
    
  2.     确定日期法   
  1)将期限设置到某一日的0时0分0秒失效   
  举例:到2003年1月29日0时0分0秒失效   
  Response.Cookies(“LastView”).Expires=#   1/29/2003   #     
  或   
  Response.Cookies(“LastView”).Expires=#   2003/1/29   #   
  或   
  Response.Cookies(“LastView”).Expires=“January   29,2003”   
  2)将期限设置到某一日的某一时刻失效   
  举例:到2003年1月29日21时0分0秒失效   
  Response.Cookies(“LastView”).Expires   =   #2003/1/29   21:00:00#   
  或   
  Response.Cookies(“LastView”).Expires   =   #1/29/2003   21:00:00#   
  或   
  Response.Cookies(“LastView”).Expires   =   #January   29,2003   21:00:00#   
  其实,在这种方法中,用““   ””和“#   #”的效果是一样的。例如   
  Response.Cookies(“LastView”).Expires=“January   29,2003”   
  和   
  Response.Cookies(“LastView”).Expires=#   January   29,2003   #   的效果就是相同的。   
    
  3.     date+    ow+   法   
  这种方法主要结构为Date+数学式或now   +数学式。通过简单的四则运算的方法,将Cookie   的失效时间设置到当前时间后的某一段时间内。这里的加号都表示在当前时间的基础上加上预设时间。   
  1)date+法   
  如将期限设置为当前日期后的第N天的0时0分0秒,我们可以使用上述已谈到过的方法也可以使用如下格式:   
  Response.Cookies(“LastView”).Expires=Date+N   
  date+法是一种比较死的方法。它和上述方法差别不是很大,完全可以由上述几种方法代替。下面介绍now+法,这是一种比较灵活的方法,它可以将失效时间准确地定位到当前时间后的任意一年、一月、一天、一小时、一分、一秒。   
  2)now+法   
  先举一个例子:   Response.Cookies(“LastView”).Expires   =   now+1   
  这条语句的功能是:把Cookie的失效时间限制到1天后的同一时刻。这里的1代表1天,即24小时。由于now代表当前Web服务器的系统时间,包括年、月、日、时、分、秒,则该语句所表达得Cookie   的失效日期在明天的同一时、分、秒上。若改成now+2则表示此Cookie   的失效日期在两天后的同一时、分、秒上;now+30表示此Cookie   的失效日期在一个月后的同一时、分、秒上;now+30*2表示此Cookie   的失效日期在两个月后的同一时、分、秒上;now+365则表示此Cookie   的失效日期在一年后的同一时、分、秒上……   
  当把1分成24等份,即该语句变成:   Response.Cookies(“LastView”).Expires   =   now+1/24则表示把Cookie的失效时间限制到一小时后。在此基础上,把1再分60等份,即把now+1/24改成   now+1/1440,则表示把Cookie的失效时间限制到一分钟后。这里的1440是由24*60得来。同理,要把Cookie的失效时间限制到十分钟后,则把程序变成Response.Cookies(“LastView”).Expires   =   now+10/1440;要把Cookie的失效时间限制到一秒钟后,则程序变成Response.Cookies(“LastView”).Expires   =   now+1/86400。当然,理论上把Cookie的失效时间限制到微秒级也是可以的。不过,那就没有什么实际意义了。另外,如果程序语句变成:   Response.Cookies(“LastView”).Expires   =   now+1+1/1440则表示Cookie的失效时间为24小时零一分钟后。   
    
  以上只是笔者在对ASP研究过程中的一些心得。对设置Cookie的失效时间的方法进行一个详细的阐述,以弥补市面上有关书籍中的不足,希望大家在编程时能够得到方便。
"

相关推荐

  • 网友评论

    • (*)

    最新评论