如何读取本地机器cookie的值?(50分)

  • 主题发起人 主题发起人 YuanGuo2001
  • 开始时间 开始时间
to yuyang:
我想如果模拟web服务器的话,那你本地有多少cookie就得模拟多少个服务器了.

to jsxjfd:
cookie pal 不能显示口令,cookie pal只是显示server,name,value,expires
我觉得从本地.txt文件读取的话,expires日期怎么读取是个问题,其他三项分别在文
本文件的第一行,2,第三行. 关键是日期我不知道这么读取.譬如
大富翁的cookie,.txt文件里是"1024|930168832|29527433|3785738464|29509441|"
cookie pal 能读取来是2002-11-17 00:00,怎么实现啊?

to kifo
还有条件啊:)
 
to yuyang:
Apache我没用过,更别叫我区读源码了,^_^
 
具体是“1024|930168832|29527433|3785738464|29509441|"”的哪一项?
我觉得这个应该好办,比较一下两次登录的情况。
同一天,差一天?
 
摘自hubdog的葵花宝典:
根据Netscape公司的规定,Cookie的格式应为:
Set-Cookie: Name=Value; expires=DATA; Path=PATH; domain=DOMAIN_NAME; secure
而且根据规定,日期(DATA)的设置必须满足格式“Wdy, DD-Mon-YYYY HH:MM:SS GMT”,
expires具体是“1024|930168832|29527433|3785738464|29509441|"”的哪一项,
我不知道

 
在自己的 Web Service 上做个页面,改变一下 expires 应该能看到。
忙着查看贴子。我会邦你考虑的。
但我觉得这个和浏览器有关。我用的是IE,你呢?它们的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调试通过
 
以上答非所问!
 
to jsxjd:
我没做过web applicatin,所以不太清楚怎么实现,
我用的是IE,麻烦您了.

 
我考虑考虑,你这贴好几天了。
 
如果我没记错,飞来石兄所转为N年前的DELPHI大吓-富贵-所著,也不说明一下。
 
微软的说法:http://www.microsoft.com/info/cn/cookies.htm
 
微软的说法:http://www.microsoft.com/info/cn/cookies.htm
这里都是介绍一些常识,没什么内容啊
 
以下是我从服务器发出的Cookies 中记录的不同 Expires 日期,
大家来看一下具体的时间和 一串数字有什么关系。

UserName
Iab
localhost/
0
3470147584
29542721
1866244512
29509728 Jan 1 2003
*


UserName
Iab
localhost/
0
4181721088
29542922
2682444512
29509728 Jan 2 2003 多一天
*

UserName
Iab
localhost/
0
4181721088
29542922
2682444512
29509728 Jan 2 2003 00:00:01 多一秒,没变化
*

UserName
Iab
localhost/
0
486753792
29542923
1845577216
29509729 Jan 2 2003 00:01 多一分
*

UserName
Iab
localhost/
0
1306884608
29542927
3703677216
29509729 Jan 2 2003 00:31 再多30分
*
 
分析中----------
 
发现临时文件Temporary Internet Files里面的cookie的
属性有 "截至日期",而cookie文件下的没有
 
都没人知道吗?
 
算了,结帖了
 
后退
顶部