网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 程序设计-> Delphi/Pascal-> Cookie的建立使用

Cookie的建立使用
作者:佚名 来源:InterNet 加入时间:2004-11-25
相关文章
  • 全面了解了解Cookie
  • Delphi中管理Cookie是一件非常容易的事
  • 相关书籍:

    Cookie的建立使用

    Cookies是一种Web服务器在客户端存储和返回信息的机制

    这种简单的、永久的和基于客户端的状态信

    息大大的扩充了基于Web的客户/服务器(Client/Server)应用程序的能力。因此广泛应用在大量的实际中,

    例如所有订阅Microsoft公司的MSDN的用户、访问过Borland Online的用户,以及访问过的主页本地存储

    Cookie,以便下次访问时提供上次访问的记录。

    Delphi 3是Borland公司1997年推出的可视化、面向对象的高效率的快速应用程序开发工具(RAD),提供

    了大量的最新功能,例如开发COM/DCOM,一步开发ActiveX对象,多层数据库应用程序MIDAS等,并且使用

    Delphi 3开发基于Web服务器的程序,如ISAPI/NSAPI ,Win-CGI,CGI程序都十分方便。

    使用Delphi 3开发Web Server程序是非常简单,方便的,因为在Delphi中提供了Web Module、

    TWebApplication、TWebRequest、TWebResponse、TPageProducer等大量的对象供使用.对于

    Cookie

    Delphi3也提供了大量的程序供使用

    如TWebResponse.Cookies,TWebResponse.SetCookieField

    ,TWebRequest.Cookie,TWebRequest.CookieFields,TWebRequest.ExtractCookieFields等,应该是

    非常方便。但本人为了实现一功能需要设置Cookie,但是发现使用Delphi提供的SetCookieFields设置不

    成功,经研究Delphi 3所带的HttpApp.Pas和IsapiApp.Pas文件发现在中文Windows 95和NT环境下该程序

    有错误。 根据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目录,这样会完全改正错误,这样是最根本的解决方法,但是 如果将源程序放在另一未修改的

    Delphi中(例如提供源程序给别人和自己重新安装)编译又将出现问题。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;

    (以上程序用Win95B的个人Web服务器+Netscape Navigator 4.04调试通过)



    [文章录入员:fightter]

    相关文章
  • 全面了解了解Cookie
  • Delphi中管理Cookie是一件非常容易的事
  • 相关书籍:
    本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    Delphi/Pascal
    C/C++/VC
    C++Builder
    Basic/VB类
    Delphi/Pascal
    Java编程
    FORTRAN
    其它
    电脑教程阅读排行
    ·DELPHI下的多线程程序设计(...
    ·Delphi与Excel的亲密接...
    ·Delphi实现串口通信的常用的...
    ·Delphi中初始化.Ini文件...
    ·Delphi中用于读写(I/O)...
    ·谈谈Delphi中的类和对象
    ·Delphi编译错误中文手册
    ·Delphi中关于TApplic...
    ·OPENGL图形程序设计
    ·SQL的基本操作