精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● Delphi>>Delphi 网络编程>>浏览器>>[文章]Cookie的建立使用

主题:[文章]Cookie的建立使用
发信人: delphifan()
整理人: delphifan(2000-12-05 19:43:28), 站内信件
Cookie的建立使用 

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

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

--
================================================= 
==          [email protected]                  == 
==    [一个真正有内容、较实用的Delphi网站]       == 
==        http://delphifan.wojia.com           == 
==  http://lmd.yeah.net  http://lmd.126.com    == 
================================================= 

※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.100.19.254]

[关闭][返回]