说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi 3中Cookie的建立使用

HTML文档下载 WORD文档下载 PDF文档下载
Delphi 3中Cookie的建立使用

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

这种简单的、永久的和基于客 户端的状态信息大大的扩充了基于Web的客户/服务器(Client/Server)应用程序的能力。 因此

广泛应用在大量的实际中,例如所有订阅Microsoft公司的MSDN的用户、访问过Borland

Online的用户,以及访问过我的主页(http://www.nease.net/~borland)的用户都会在本 地存储

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调试通过)

Visual Basic 窗体背景花纹的实现 Visual Basic 中的界面设计原则和编程技巧 Visual Basic 中文本框处理技巧集萃 Visual Basic 中字符淡出淡入的实现 Visual Basic窗体背景花纹的实现 Visual Basic下工具条的制作 Visual Basic中的界面设计原则和编程技巧 Visual Basic中在同一界面输入大量数据的几种方法 VisualBasic中的界面设计原则和编程技巧 VisualBasic中用户界面的设计原则 把 VB 标准的工具栏变成平面式 把窗体卸载干净-VB资料 保持初始的窗体大小-VB资料 编程实现将所有窗口最小化-VB资料 不规则形状窗口详细说明 -VB资料 不用 API ,直接调用关联的程序 -VB资料 处理过程时的鼠标显示 -VB资料 窗口处理技巧大全 -VB资料 窗口事件的发生顺序-VB资料 VB创建不规则窗口 VB创建透明窗体 VB创建位图菜单 VB创建无 Icon 的窗口 打开 Win95 的创建快捷方式窗口-VB资料 打印机技巧 -VB资料 带有历史记录功能的菜单-VB资料 得知目前Mouse所指的Menu Item是哪一个-VB资料 调整 Combo 下拉部分的宽度 -VB资料 对象是使用 TAB 键还是鼠标激活的 -VB资料 防止用户编辑文本框控件中的内容-VB资料 改变 ListIndex而不发生 Click 事件 -VB资料 关于sqlplus的spool功能?(必给分) 关于System.net 浏览器下载怎样设置他不自动打开word,excel,servlet程序怎么写啊? *.iso是什么文件??虚拟光驱用的吗??如何运行?? 局域网内读取(只是读取)服务器内数据库(.MDB) 有什么可行的办法? 谁有aspedit 2001 build 29 的破解与 汉化 偶的win2000p打不开txt文件,说缺少prontpg.exe文件,怎么回事呢?//牛虻 如何更改对话框上的字体大小。。我好象在对话框的属性设置里没有看到关于字体的设置 怎样才能使我的QQ正常上网? 高手注意!!! 谁能精确的告诉我需要哪几个文件就可以在不同的机器(系统不同)上执行编译好的vb6.0程序 勇敢的警察!?!! 各位大侠,小妹问一个关于Property Sheet的问题,怎么把下面的“应用,帮助,取消“设置成不显示 用installshield express制作安装程序,程序有关于SQL Server的连接,应怎样处理? 各位侠士,vc中怎样读取DBGrid Control中的数据?怎样执行sql 语句?就向delphi中一样?拜托!拜托! 版本控制问题[Fatal Error]Internal Error: L519 如何在Exhcnage server 服务器上安装反病毒软件 apache服务器如何同tomcat4.0 结合起来. 字符串中怎么显示“”,例如要显示字符串-----"“ID”是必选字段"。 求助Applet Servlet CreateOleObject('ADODB.Connection')怎么用? 哪位有AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了。 谁有SHA1算法源代码的,给我一份,我很急,一定给分!有网址的,也给分? ODBC SQL SERVER DRIVER timeout expired错误,不知如何解决 请问那位大侠知道哪有北大出版社出版的WINDOWS程序设计这本书的电子版下载 如何控制session的有效时间? VBA下怎样实现...... 很简单的问题,如果得到OS是什么啊? VB怎样调用Oracle没有包的存贮过程? 哪位能提供AIX下的cc,xlC,make的中文使用说明?我的英语太差,看系统的帮助头都大了! 那位有用网叶通过servlet提交数据的例子,越简单越好 救命啊! ----关于漂浮的工具条的隐藏(按钮失踪了!)。 主题:为何我的机子只能进入DOS平台,无法再进入Windows界面? 请问什么地方有《UNIX环境高级编程》的随书源代码下载,谢谢!! 如果得到OS的类型啊?用什么API函数啊? 请问哪有Linux的源代码下载??? 作者如何获得他自己编写的程序的版权及著作权? SOS!!请高手速指点, 立刻要用到,谢谢!! 报表字段过长如何分行打印? 急。。。关于字体属性 Jbuilder5.0 注册码,那个想要,我这儿有!今天刚搞到! 高手再哪里,网络程序!!!请赐教,高分!!! 如何在vc中静态调用dl中的函数? 循环里的变量为什么读不出? ADO的问题,请指教 用Delphi6导入VB做的ActiveX控件,为何不能生成VCL类?怎末办? 我给你出个谜语,你帮我解答个问题? 关于SQL SERVER的图片问题 读取二进制注册表的问题! 请问编写AWT的面向对象JAVA程序用哪个开发软件比较好? 关于手机铃声图片的下载 把2/7米长的铁丝平均分成7段,每段占全长的( ),每段长( ) 10 lb等于多少千克 『共和国』一词的由来?如上 word2007设置页边距上下各2.5cm,左3.5cm,右2.5 cm,左装订本人菜鸟,没找到在哪里设置这个,还有个单倍行间距是点右键在段落里面设置, 2m=()dm=() mm 幽默一词来源于哪个国家 1300dm³等于多少m³填分数... 1.2m=( )dm=( )mm=( ) 360ms=( )ns急 lb/hr和kg/h怎么换算 糖果厂昨天共包糖果337千克,其中包装水果糖340袋.奶糖:0.4千克 水果糖:0.65千克(1):40千克水果糖最多可以包装成多少袋? 介绍一种玩具布娃娃的400字作文快点 过了今天就没用了 表示法兰的600-900lb的lb是什么单位?有什么意义? inch是什么意思 我来为我心爱的玩具写几句广告语.例如:芭比娃娃 介绍一种玩具 400字作文 一种钢材4/5米重1/25吨,这种钢材每段长多少米?1米这样的钢材中多少吨? 3分之2米的3分之2是( )米;2分之1千克是8分之7千克的( )分之( );( )吨的4分之1是3吨. 写一篇说明性文章电器,植物,动物,玩具都行400字以上 1.5m³=()m³()dm³=()dm³ 1/2米是7/8米的? 作文 第一次买玩具400字 单位转换.0.5m³=()dm³0.55dm³=( )L=( )ml office work 上的量尺转换 因为要打印 量尺cm要设置成Inch 《我的玩具》作文400字,最好是自己写的, 求英语作文一篇,500字How did you spend the spring Festival! 350Cm一( )dm=2m lb是什么单位? 为什么kg/cm^3=kg×cm^-3? 把5L水倒入长0.4m,宽0.2m的玻璃缸中,水深多少dm 一个圆柱的地面积是1.2平方分米高是4厘米它的体积是多少立方厘米 0.9×10 3/kg=多少g/cm 3 芭比娃娃在中国是什么样的 5分之2m=(分数)dm   8分之日等于()时 5分之2时=()分  5分之4元=()角8分之3日=()时 五平方米八平方分米等于多少m的平方等于多少dm的平方 舞蹈 中国芭比简介 2m=[ ]dm 2立方平方M等于( )立方dm 中国芭比娃娃这叫什么?微博? LB培养基,SOC培养基与SOB培养基各自的用途上的区别我知道他们各自的配方 急求英文作文一篇,500字左右.I saw a thief..." 百度作文:我最喜欢的一个玩具500字..快...都不长啊 LB培养基是什么?还有其它如SOB,SOC, 把七分之十二的铁丝平均分成三段,每段长( ),每段占七分之六米的( )每段是二米的(把七分之十二的铁丝平均分成三段,每段长( ),每段占七分之六米的( )每段是二米的( ) 求一篇“我最喜欢的一种玩具”250字左右的作文要介绍外形、质量、颜色、大小、不同之处和玩法(合适的一系列动词),要男生喜欢的玩具.最好是写车子的 什么是LB培养基LB这两个字母代表什么意思? 急求一篇关于“贪婪”的英语文章,400到500字左右!需要有中文翻译需要有英语对照的翻译 作文《我喜欢______》150字以上 Luria-Bertani中文意思,LB培养基 把七分之六米铁丝平均分成两段,每段长( )米,每段占全长的( ) ()米的8分之一与12米的4分之3相等 LB培养基的“LB”代表什么呢? 我要一篇500字关于父母亲的英文的文章 7米的八分之一等于8米的七分之一 ”王八蛋”一词的由来与演化 把长7米的铁丝平均分成七段,每段占全长的?每段长几米? 0.125米的8分之7是多少?列式计算 发展一词的由来,最先是来自哪个国家 把3分之2米长的铁丝平均分成6段,每段占这根铁丝的(),每段长() LB是什么计量单位LB好象是重量 动漫一词是来源于哪个国家?我只是想知道动漫的来源是那个国家?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn