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

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

双向多功能U盘:从Android设备到PC还有多远? 证明了自己:微软Win8获美国防部6.17亿订单 2013 Facebook黑客杯报名即将开始 解决Win8下IE10无法打开的故障 [简讯] Scala 2.10.0发布! 收购传闻:Apple一厢情愿还是Waze待价而沽 回顾过去,展望2013:移动开发引擎、工具和语言盘点 成本为0!Netflix开源工具Janitor Monkey清理AWS iOS开发者讲述在Google工作的三个月 GitHub历史上最糟糕宕机事故回放及反省 疑因竞争 谷歌有意让地图与WP手机不兼容 移动游戏开者必看:海外VC最关心什么? 淘宝UED:随侃设计师的个人素养 TIOBE 2013年1月:不负重望 Objective-C再次赢得桂冠! 大数据:商业或技术的挑战? 开源移动统计:Cobub Razor近期版本大升级 无人机应用,为何屡遭苹果拒绝 2013年Java继续火的五大理由 Rails所有版本都有SQL注入漏洞?其实没那么严重 如何设置Windows Server 2012 NTFS权限 智能手机大局已定 HTC难扭转乾坤? 比谷歌手表更酷!基于大数据分析的睡衣 众投资金:改变了移动游戏开发的一切一切 这些科技产品和革新或在今年“横空出世”?! 现代Objective-C七宗罪 Google工程总监Ray Kurzweil意欲打造“虚拟朋友” 惠普开源JavaScript框架Enyo更新:支持桌面和移动平台 分析:三星或将成为科技行业第五巨头 是真的 诺基亚真有可能推Android手机 如何打造IE10的指尖触碰式用户体验 SUSE全球OEM联盟总监:为何SAP HANA只选择SUSE? 一个小问题,有100分可以相送,送完为止!! Update 时出现 ODBC错误文件被另一线程占用,问题出在那里?? 怎样判断一个控件是否获得焦点. 通过row和col不行,我以前也用过, 用SetSQLSelect更改dw的sql语句后,如果dw没有检索参数时能行,如果dw有检索参数则返回-1,请问有办法吗解决吗? SQL Server中的datetime类型数据是否能比较大小? Update 时出现 ODBC错误文件被另一线程占用,问题出在那里??? 请问U-C矩阵是什么? 庆祝一下 请教程序组加入程序的问题 老是想来灌水,把这点可用分送光得了,省得挂念 IT老虎,与天为敌快进来,谢谢我只有20多分了,你们一人十分吧,我留点好吧? 如何实现打印,尤其是分页打印? paw_001,paw_001 在马? NetGuardian??哪为兄弟有啊,给我一份copy~~~~~~~~~~~~ 关于自增长字段使用的问题,高手请进 这一贴,分就少点了,就这么多啦 有人能告诉我广东省C程序员与JAVA程序员的薪水比较吗?为什么会有这种差距呢 请问用javaApplet如何控制IE界面? 点对点的讨论 水平考试与资格考试及格分别是多少分? 如何再网页中实现打印功能,份也打印。 我发现了一个网站的BUG,我该怎样进去? 到处都是泡泡,俺看的想吐,晚上再来算了。 怪事, 屏幕变黑白 我的问题_6 MYSQL中like的问题 请教打印预览问题 请问,如果我想把,file edit tools window这个主菜单栏动态去掉,怎么做? 如何用程序代码实现在Memo文本编辑框中被选中的文字加下划线。 怎样分析tcp报文(我很急呀) *.idl文件如何使用? 各位大侠,怎么写一个php在线打分的程序阿? 我测试一下 感兴趣的去试试! IE外壳扩展的程序 Delphi 6.0的一个Bug??? 我怎么把字符串放进缓冲里?急急急!!! 恭喜 zhipop 喜得漂亮的可爱的千金 几个小问题想请教大家 如何将浏览器的地址栏里的IE图标换成自己的图标? r俺明天想去给我的宝马生生级,不算显示器,3000元左右,请各位大侠们赐教该什么配置 2000下写的程序,NT 4.0workstation上为什么不能跑? 启用新主页下载数据窗口编辑器 请教Qbasic中的几个问题..... 用BCB如何向Oracle8.0.5中更新BLOB 用ODBC编程时发现错误:nvarchar 类型无数据类型同其绑定,用CString 出错!如何解决? 救命,救命!!!!!!!!!!!! 【 这两天好像来了很多新人嘛!来报个到吧! 】 请教:如将一个 FormView 的 ScrollBar 去掉 在asp中怎么定义可变长的数组? 汽油装在矿泉水瓶里,被压,会不会爆炸,或者起火?比如掉在马路上,汽车压过来……会不会爆炸 把一个手机变进矿泉水瓶的魔术我看了一个魔术,那个魔术师将一个手机变进了一个完好的矿泉水瓶里,而且瓶子是完好的,现场n个观众检验过的,所以各位谁知道这么变的请教教我, 娃哈哈都有哪些产品 娃哈哈的各系列产品 最虎药酒配方有哪些,组成成分是什么 变魔术怎么把矿泉水瓶的盖子变到矿泉水瓶里?魔术师把瓶盖变进瓶子里边以后,观众是可以检查的?怎么变的 娃哈哈为什么叫娃哈哈? 泡制营养酒有什么要求?国家什么机构检测药酒成份最权威?包括有毒有害物质,兴奋剂,激素等 今天抽完烟扔到地上烟头立起来是什么兆头? 娃哈哈矿泉水瓶,596ml的,有多高?身边没有尺子, 空的矿泉水瓶有什么用这个星期三是截止日期!各位帅哥美女,做考试卷要用!另:尽量多一点! 抽完烟把烟蒂丢在地上烟头树立起来有什么征兆 矿泉水瓶怎样做娃娃 人为什么不会被大气压压扁如果解释为内外大气压平衡,产生的压力相等而相互抵消的话,那么试想用两块相同的铁板用相同大的力从相反的方向压一个人,难道由于力可以相互抵消,这个人就可 香烟烧到只剩烟头那部分后扔到地下后会继续燃烧吗?就是说抽香烟的时候抽到只剩烟头的部分,就是上面的烟草部分全都抽完了,没有弹烟灰,那扔到地上后会继续燃烧吗? 矿泉水瓶手工制作宠物吸水器懒得去买宠物用的吸水器 请问用矿泉水瓶怎么做 就是水倒进去然后瓶盖朝下 只有小狗去舔的时候才会出水 为什么大气压不会把人压扁?请真正懂的答 不要瞎编的 你有21根烟头,知道3个烟头可以卷一根烟,请问21根烟头你能抽几根烟回答7的是- 回答10的,都错了,给你们个提示答案11根,能回答对,然后说出理由的就给分 矿泉水瓶手工制作动物 为什么人在大气压中不会被压扁,而在在水中会被压扁?人在大气压中不会被压扁,是因为人身体内部也有大气,抵消了,那么在水里,人身体里也有水,为什么不和外面的水压力抵消,而在深的地方 燃烧的烟头碰到水,水平面上得烟纸也会湿,是什么原因. 矿泉水瓶自制沙漏怎么做 为什么有大气压,房子不会被压扁 两个完全相同的矿泉水瓶,一个装满沙,另一个装满水,放在同一斜面上滑下,那个瓶 幼儿园自制玩具有哪些在分散活动时玩的,如踩尾巴、跳绳等.是要有自制体育玩具的分散活动.不需要玩法,提供的游戏要多点!谢谢O(∩_∩)~ 大气压那么大为什么我没被压扁?平时我用笔刺自己一下!我计算过了.压强顶多3000PA我就疼得要死大气压有10的5次方PA为什么我都不觉得疼?难道空气的压力和用笔压不同吗? 两个完全相同的矿泉水瓶,一个装满沙,另一个装满水,放在同一斜面上滑下,那个瓶子滚 物理-为什么水放在矿泉水瓶里久了,瓶子会挤压变形? 含水量试验 关于魔术:矿泉水瓶盖进矿泉水瓶,我想知道如何做到?不方便在这透露的话给我留言,如果有猜想的话也可以发表下.另外还有手机进矿泉水瓶也感到好奇,有达人可指教下如何做到吗? 两个相同的矿泉水瓶,一个全装沙,一个全装水,从斜面滑,那个快? 求毒奶粉 瘦肉精 地沟油 染色馒头的作文 一个空矿泉水瓶在瓶底钻个小洞,然后装上适量的水拧紧瓶盖,为什么不会漏水?为什么拧紧瓶盖不会漏水,但是打开盖子却会漏水? 两个完全相同的矿泉水瓶,一个装沙,一个装水,放在同一斜面上滑下,哪个瓶子滚得比较快 毒奶粉,地沟油,瘦肉精,染色馒头怎么没人管?毒奶粉事件在国际上很丢脸,地沟油就不说,新闻曝光后照样舀地沟油回流餐桌,现在又搞出来瘦肉精,染色馒头,到底有关部门查的不严,还是根本就不 为何将装有适量水的矿泉水瓶打开瓶盖倒插在水槽中,水不下落?而在空中打开瓶盖,为何水下落? 木头放在水里为什么不会沉下去呢? 求除了染色馒头、瘦肉精和地沟油之外,在国内其他的食品问题!急!求官方一点的说法 要写进报告里的 谢谢! 往空矿泉水瓶中加入热水,摇晃并盖紧瓶盖,过一会儿瓶子慢慢向内凹陷,这说明什么? 什么东西放在水里会沉下去 瘦肉精三聚氰胺染色馒头地沟油和贪官只要发现哪个企业那个窝点生产这些,贪官.死刑立即执行,没收全部财产的200%(没有任何商量的余地),什么死缓啊,终身监禁那都不可能.为什么不这么判 向矿泉水瓶倒热水后迅速倒出并改紧盖子,过一会瓶变扁了, 该怎么回答,孩子问:“xx为什么不会沉下水?”孩子问我:“木头,塑料,为什么不会下沉,纸张开始浮着,后来为什么下沉?空饭碗浮在水面,装满水为什么会下沉?” 我物理超差,不知怎么回答,孩 毒奶粉,瘦肉精,地沟油,彩色馒头,这些食品安全事件都说明了啥!诚信的缺失,道德的滑坡? 为什么把热水倒进瓶子又倒出,然后把盖子盖住,瓶子会慢慢往内缩,为什么?请给我解释关于大气压的,不要其他的条件的回答 ~三楼的,如果再没有好的答案,就是你了~ 为什么水里放食盐,鸡蛋不会沉下去? 进来相继发生的“染色馒头”,“瘦肉精”,“地沟油”,“毒奶粉”等耸人听闻的食品安全事件足以表明,诚信的缺失,道德的滑坡已经到了何等严重的地步.中“耸人听闻”使用恰当吗? 刘谦矿泉水瓶倒立水不流出来的魔术怎么变的?要详细的教我 追加50分 教育我不要看魔术揭秘的滚一边去没我要的答案额 他是让人从一箱密封的矿泉水中随意抽一瓶的 所以不存在道具 为什么挤矿泉水瓶,矿泉水瓶中的水会上升 有人回答 体积不变的情况下,底面积被挤小了,高度就增大 水面上我想问为什么底面积被挤小,你挤矿泉水瓶,他横向减小,但是纵向增加,好比一个圆盒 把容积为358ml的矿泉水瓶全部按入水中不考虑瓶壁的厚度,矿泉水瓶所受到的浮力有多大? 为什么矿泉水瓶倒扣在水里,水进不去? 天热 喝矿泉水时想到用矿泉水瓶做船 想请教捆扎瓶子的方法 最好有图纸 谢谢! 矿泉水瓶如果加8公斤气压会 为什么这么冷的天气装在矿泉水瓶里的水不结冰我儿子在夏天里用矿泉水瓶装了一瓶子水,放在了院子里,现在我们河北都零下十多度了,可是它却没有结冰,我又作了实验,我找了个矿泉水瓶装 我买了一瓶矿泉水,喝完之后,把热水倒进矿泉水瓶,为什么瓶子会凹进去的?为什么瓶子不会膨胀?我是这样理解的:加了热水之后(没装满瓶子),拧紧瓶盖.瓶内的压强应该是增大啊?那么,大于 往矿泉水瓶里打气,它能承受多大压强才会爆? 怎么让矿泉水瓶盖进矿泉水瓶?还有手机进矿泉水瓶,有达人可指教下如何做到吗? 饮料瓶,比如可口可乐还有矿泉水瓶,这些塑料瓶子可再生吗? 汽油放到矿泉水瓶强烈震动会不会爆炸?起摩托车总是不看油,中途没有油而推着摩托车满大街跑.所以我想把汽油放到瓶子里(震动太厉害,不能使用玻璃瓶)带上,防止没油.有听说塑料瓶里装 把手机放到矿泉水瓶的魔术怎么变的? 娃哈哈刚去娃哈哈做客户经理待遇怎样?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn