频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

4.3.1 Cookie的设置

作者: 强锋科技 顼宇峰 马军编著 出处:清华大学出版社  2008-01-11 12:24    砖    好    评论   进入论坛
阅读提示:《ASP网络编程从入门到精通》介绍了 ASP的大部分知识点。第四章主要介绍的是Response和Request对象。本文说的是Cookie的设置。

4.3  在网页中使用Cookie

Cookie是一种标记,由Web服务器嵌入用户浏览器中来标识用户。当下次同一个浏览器请求网页时,将把以前从Web服务器得到的Cookie再传给服务器。Cookie允许一个用户关联一组信息。Cookie被存为简单的文本文件,其名称标识用户和站点,可以用任何文本编辑器打开。下面就来看一下Cookie在网页中的使用。

4.3.1  Cookie的设置

当在某个网站登录之后,该网站会提示出是否保留cookies,或保留多长时间。而cookie是存储在计算机中的一个临时文件,它包括了用户在登录时的用户名及密码等相关信息。该文件有一个生命期限,其存在的期限由程序员在编程时设置其生命期限。在cookie文件生命期限到期的时候,就会从计算机中自动消失。

1.定义Cookie

可以看出,cookie是所定义的Cookie的名称,而value则是给这个变量赋予的初始值。如果定义Cookie变量时使用了Key,则表示这个Cookie变量是一个字典。所谓字典就是有相同变量名的一批不同的Cookie变量,这些变量通过不同的关键字(Key)来存储值和相互区分。

Cookie变量的一个显著特性是其具有一定的生命期限。管理和定义不同的Cookie变量其生命期限不同,该变量是通过某些Cookie变量的属性来完成的。由于不是放置在服务器端的数据库中,Cookie变量就有可能由于种种原因而遭到破坏,为了防止其他网页和网站所设置的Cookie与自己的相同而破坏了已经定义的Cookie变量,使用一些其他Cookie变量的属性来进一步管理Cookie。定义Cookie的一般格式:

Response.Cookie(cookie)[(key)|.attribute]=value

注意若所设置的Cookie变量在客户机上已存在,而且其各种参数均相同,那么原有的Cookie变量将被覆盖。

2.常用定义Cookie的方法

该格式的意义是在客户机上写入一个Cookie变量,该变量的名称为cookie,其变量值为value。若该变量已经存在,则直接写入value值;如果该变量不存在,就要创建一个新的变量,其名称为cookie,值为value。Cookie变量引用的一般格式为:

Response.Cookies(cookie)=value

如下面的例题:

%
Response.Cookies("machine")="celeon300A"
Response.Cookies("os")="windows 98"
%

例题所示的意思是定义两个Cookie变量,在客户端写入两个变量,其中一个变量名为machine,值为celeon300A;另一个变量名为os,值为windows 98。所有定义的Cookie变量都存储在客户端硬盘上一个叫Cookies的目录下面。

注意如果所设置的Cookie变量在客户机上已存在,而且其各种参数均相同,那么原有的Cookie变量将被覆盖。

3.定义Cookie变量的生命期限

通过设置Cookie变量的Expires属性来设置它的生命期限。如果在一次客户访问结束以后,所设置的Cookie变量依然留在客户端机上面并且有效,那么必须设置Cookie变量的Expires属性值,若不设置,那么在一次会话结束以后,所有程序中设置的Cookie变量都将过期失效。

Time属性值为一个时间常数,按照VBScript的约定,时间常数一般是用两个“#”来界定的。Expires属性的界限是:1980年1月1日至2038年1月19日,3:14:07GMT。Expires属性引用的一般格式为:

Response.Cookies(cookie). Expires=Time

例如下面的一个循环,它将所有的Cookie变量的过期日期都设置为2005/5/1。

%
For Each Cookie in Response.Cookies
        Response.Cookies(cookie). Expires=#May 1,2005#
Next
%

4.定义Cookie变量的作用域

由于Cookie变量使用得非常广泛,各种不同的网站都在客户端的机器上写下了各式各样的Cookie变量和它们的值。但是Cookie变量只能定义和赋值,而不能追加,若名称相同,则会将原有的数据覆盖。

如何保证不同网站的Cookie不会互相冲突及同一个网站内的Cookie不会互相冲突。解决这两个问题的方法是使用Cookie变量的domain属性和path属性。Domain属性用来设置所定义的Cookie变量的域,设置不同变量的域可以防止不同网站之间的Cookie相互冲突;path属性用来设置所定义的Cookie变量的文件路径。此路径是相对于服务器的根目录而言。一般一个网站的不同开发组会使用不同的文件路径,这样就可以避免Cookie的互相冲突。

这两个属性的定义格式为:

Response.Cookies(cookie).domain=domainname
Response.Cookies(cookie).path=pathname

域就是一个网站的域名,而地址则是该文件的相对地址。如下面的例题定义了一个Cookie变量,用来记录用户的名字,并设置了域和地址属性。

%
Response.Cookies("Customer")="wang"
Response.Cookies("Customer").Expires=#May 1,2005#
Response.Cookies("Customer").Domain="http://www.xxx.com"
Response.Cookies("Customer").path="/wwwroot/hrm"
%

在上面的例题中设置了变量的域和路径,若网页修改文件夹名,而且还要在程序中找到这个地方,把域和路径修改过来,为了提高效率,可以用以下程序的方法来实现动态生成域和地址。

%
dim getdomain
dim getpath
dim position
getdomain=request.servervariables("server_name")
position=instrrev(path,"/")
getpath=left(request.servervariables("path_info"),pos-1)
Response.Cookies("Customer")="wang"                         '记录用户名
Response.Cookies("Customer").Expires=#May 1,2005#         '记录当前日期
Response.Cookies("Customer").Domain=getdomain              '记录当前网址
Response.Cookies("Customer").path=getpath                   '记录路径
%

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
专题
专题:ASP.NET 2.0基础开发指南
微软的Ajax:Atlas(ASP.net AJAX)
ASP.NET开发教程
ASP实用开发教程
项目实践精解:基于Struts-Spring-Hibernate的Java应用开发
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
世纪枭雄比尔盖茨的王者传奇
世纪枭雄比尔盖茨的王者传奇
虚拟化技术还有点“虚”
虚拟化技术还有点“虚”
ASP.NET开发教程
ASP.NET开发教程
· ASP.NET开发教程
· 专题:ASP.NET 2.0基础..
· LAMP技术精解
· 服务器节能与绿色IT
· ARP攻击防范与解决方案
· Linux 集群技术专题
· Windows集群服务应用
· CISSP认证成长之路
· SQL Server 2008/2005..
· SQL Server入门到精通
· 网络工程师职业规划与..
· 浏览器的战国时代
· 运营商封堵ADSL共享 中..
· 微软出价446亿美元收购..
· 技术人求职简历完备手册
· 开源虚拟化技术Xen
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Apache技术专题
· Windows集群服务应用
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
· 了解统一威胁管理(UTM)..
· 专题:AIX操作系统管理..
· 访问控制列表(ACL)介绍
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· 三层交换技术专题
· Apache技术专题
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用
· 访问控制列表(ACL)介绍
· ASP.NET开发教程
· PHP开发应用手册