Cookie对象具有如下几个属性:
●Expires:设定Cookie对象到期的日期;
●Domain:将Cookie对象的传送确定为仅由Domain属性确定的成员;
●Path:确定Cookie对象传送路径;
●Secure:明确Cookie对象是否安全;
●HasKeys:返回Cookie对象是否包含多值。
如果没有显式定义Cookie对象的Expires属性,Cookie对象将在用户会话期结束时到期。
ASP中通过Request集合和Response集合读写对象。向Cookie对象写变量的语法如下:
Response.Cookies(cookie)[(Key)|.attribute] = value
其中,cookie是Cookie文件名,Key标明一个字典元素,attribute是Cookie 的一个具体性质,value是分给cookie的值。例如,为创建一个叫MyHobby的Cookie,并分配其值为:BasketBall,使用下述语法:
<%Response.Cookies(“MyHobby")=“BasketBall" %>
在客户机器上读取Cookie对象的方法如下:
Request.Cookies(cookie)[(Key)|.attribute]
其中,cookie是被请求Cookie的名字,Key是子关键字值下标,attribute是用于标明Cookie属性。例如:为抽取一个叫做MyHobby的Cookie中的信息并将它的值写到页面,使用下述语法:
<% Request.Cookies(“MyHobby") %>
需要注意的是:不能在HTTP页首信息已被送到请求浏览器之后,再向一个Cookie对象写入信息。换句话说,不能在任何HTML标识符被发送到浏览器之后才向浏览器发送Cookie信息。
具体实现
下面通过一个基于ASP技术的聊天室的实现,来介绍如何处理Session对象变量失效的问题。
●在用户登录前初始会话级变量:UserName(用于存储登录用户名)。
<% Session(“UserName")=“" %>
//初始化Cookie对象
<% Response.Cookies(“UserName")=“" %>
●在用户登录时,设置会话级变量并备份到客户端Cookie对象中。
<%userName=Trim(Request.For(“UserName"))%>
<% Session(“UserName")=userName %>
//将会话级变量备份到客户端Cookie对象中
<% Response.Cookies(“UserName")=userName %>
●在用户发言的时候,读取会话级变量,如果该变量已经失效,则通过读取Cookie对象,恢复该会话级变量的属性值。
<% userName=Session(“UserName") %>
//如果变量已经失效,则检索客户端Cookie对象
<% if userName=“" then %>
<% userName=Request.Cookies(“UserName") %>
<% if userName=“" then %>
//如果用户未经过登录就进入聊天室,则该Cookie对象属性值为空。此时,提示用户出错,并转向用户登录页面