Cookie的建立使用

根据Netscape公司的规定,Cookie的格式应为: 
Set-Cookie: 
Name=Value; 
expires=DATA; 
Path=PATH; 
domain=DOMAIN_NAME; secure 
而且根据规定,日期(DATA)的设置必须满足格式"Wdy, DD-Mon-YYYY HH:MM:SS GMT",
基于RFC822, RFC850, RFC1036和RFC1123等规定,但是检查HTTPAPP.PAS中的function 
TCookie.GetHeaderValue: string中为FormatDateTime('"expires="' + DateFormat + ' "GMT; "', 
Expires);,其中const DateFormat = 'ddd, dd mmm yyyy hh:mm:ss',此程序在英文环境中产生的
格式是正确的,但是在中文中产生的结果却不对,因为星期和月份都将按照中文的表示方法:
如将11月生产"十一月"中文串,这样在Netscape Navigator和Microsoft Internet Explorer
就不能辨认了。 

既然错误在于原VCL未考虑中文环境的问题,所以修改的方法有:
1、 修改VCL源程序,编译后将dcu文件拷贝到Lib目录,这样会完全改正错误,这样是
2、 最根本的解决方法,但是如果将源程序放在另一未修改的Delphi中(例如提供源程序给
3、 别人和自己重新安装)编译又将出现问题。
2、因为使用并不太多,所以可以将修改的程序放在自己的程序中,使用Delphi 3提供的
TWebResponse.SetCustomHeader设置,这样的好处是将程序放在自己的程序内,重新装Delphi
或在另一台计算机上编译的结果也会完全正确。因为Cookie的目的一般有两种,一种是在
此会话过程中使用,过后不使用,此时不需要Expires段,不会产生时间错误,可以使用Delphi 
3提供的所有Cookie程序;另一种为永久保存,时间一般越长越好,于是可以将时间设置
为2099年二月22日, 于是程序中设置Cookie的方法为: 
Response.SetCustomHeader('Set-Cookie','Name=Value; expires=Sun, 22 Feb 2099 08:08:08 
GMT'); (注斜体用自己的名称代替,例如设置Count=10,则Name用Count代替,Value
用10代替),这样就可以建立Cookie了. 

以下为建立一个访问计数器的程序,可以参照: 
const 
LastIp:String='0:0:0:0'; //避免重复计数 
Var 
S:String; 
Count:Integer; 
begin 
S:=Request.CookieFields.Values['count']; 
if S<>'' then begin 
try 
Count:=StrToInt(S); 
Except 
Count:=0; 
End; 
end else Count:=0; 
if LastIp<>Request.RemoteAddr then Inc(Count); 
LastIp:=Request.RemoteAddr; 
Response.SetCustomHeader('Set-Cookie','count='+IntToStr(Count)+'; 
expires=Sun, 21 Feb 2010 08:08:08 GMT'); 
Response.Content:='您是第'+IntToStr(Count)+'来到本页!'; 
End; 

 
 
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Web开发中,COOKIE和SESSION是常用的会话管理机制。 COOKIE是存储在客户端浏览器中的小型文本文件,由服务器发送给客户端浏览器,用于存储客户端的信息和状态。通过设置COOKIE,服务器可以跟踪客户端的访问,并在客户端下次访问时使用这些信息。 SESSION是在服务器端创建的一个对象,用于存储会话信息。在客户端与服务器建立连接时,服务器会创建一个唯一的SESSION ID,并将其保存到COOKIE中发送给客户端。客户端浏览器会将COOKIE保存在本地,下次访问时再将COOKIE发送给服务器,服务器通过SESSION ID来识别客户端,并从SESSION中获取客户端的信息和状态。 SESSION和COOKIE配合使用,可以实现更灵活的会话管理。具体实现步骤如下: 1. 客户端向服务器发送请求,服务器在处理请求时创建SESSION对象,生成唯一的SESSION ID,并将SESSION ID保存到COOKIE中。 2. 服务器将SESSION ID保存到SESSION对象中,并将SESSION对象保存到服务器端的内存或硬盘中。 3. 客户端浏览器将COOKIE保存在本地,下次访问时再将COOKIE发送给服务器。 4. 服务器通过SESSION ID识别客户端,从SESSION对象中获取客户端的信息和状态,并进行相应的处理。 5. 当会话结束时,服务器端会删除SESSION对象,客户端浏览器会删除COOKIE,会话结束。 通过COOKIE和SESSION配合使用,可以实现以下功能: 1. 跨页面传递数据:在SESSION对象中保存数据,可以在不同页面之间共享数据。 2. 记录用户状态:通过COOKIE记录用户登录状态,下次访问时可以自动登录。 3. 限制访问权限:在SESSION对象中保存用户权限信息,根据权限控制用户访问权限。 4. 记录客户端信息:通过COOKIE记录客户端浏览器、操作系统等信息,用于统计分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荣华富贵8

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值