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 '记录路径
%
|
| 回书目 上一节 下一节 |
|
· Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. · 08年5月各大网上书店及.. |
· 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. · 系统分析师自测获奖名.. |
|
||||
| · ASP.NET开发教程 · 专题:ASP.NET 2.0基础.. · LAMP技术精解 · 服务器节能与绿色IT · ARP攻击防范与解决方案 · Linux 集群技术专题 · Windows集群服务应用 · CISSP认证成长之路 |
· SQL Server 2008/2005.. · SQL Server入门到精通 · 网络工程师职业规划与.. · 浏览器的战国时代 · 运营商封堵ADSL共享 中.. · 微软出价446亿美元收购.. · 技术人求职简历完备手册 · 开源虚拟化技术Xen |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Apache技术专题 · Windows集群服务应用 · 国际文档格式标准开战 |
· 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 · 了解统一威胁管理(UTM).. · 专题:AIX操作系统管理.. · 访问控制列表(ACL)介绍 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · 三层交换技术专题 · Apache技术专题 · 企业数据恢复指南 · Windows集群服务应用 |
· 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 · 访问控制列表(ACL)介绍 · ASP.NET开发教程 · PHP开发应用手册 |
|||