- VBScript 教程
- VBScript - 首页
- VBScript - 概述
- VBScript - 语法
- VBScript - 启用
- VBScript - 位置
- VBScript - 变量
- VBScript - 常量
- VBScript - 运算符
- VBScript - 决策
- VBScript - 循环
- VBScript - 事件
- VBScript - Cookie
- VBScript - 数字
- VBScript - 字符串
- VBScript - 数组
- VBScript - 日期
- VBScript 高级
- VBScript - 过程
- VBScript - 对话框
- VBScript - 面向对象
- VBScript - 正则表达式
- VBScript - 错误处理
- VBScript - 其他语句
- VBScript 有用资源
- VBScript - 问答
- VBScript - 快速指南
- VBScript - 有用资源
- VBScript - 讨论
VBScript 和 Cookie
什么是 Cookie?
Web 浏览器和服务器使用 HTTP 协议进行通信,而 HTTP 是一种无状态协议。但对于商业网站来说,需要在不同的页面之间维护会话信息。例如,一个用户注册需要完成多个页面才能结束。但是如何跨所有网页维护用户的会话信息呢?在许多情况下,使用 Cookie 是记住和跟踪偏好、购买、佣金以及其他改善访客体验或网站统计信息所需的最有效方法。
它是如何工作的?
您的服务器以 Cookie 的形式向访问者的浏览器发送一些数据。浏览器可能会接受 Cookie。如果接受,它将作为纯文本记录存储在访问者的硬盘驱动器上。现在,当访问者访问您网站上的另一个页面时,浏览器会将相同的 Cookie 发送回服务器以进行检索。检索后,您的服务器就知道/记得之前存储的内容。Cookie 是 5 个变长字段的纯文本数据记录:
过期时间 - Cookie 将过期的日期。如果为空,则 Cookie 将在访问者关闭浏览器时过期。
域名 - 您网站的域名。
路径 - 设置 Cookie 的目录或网页的路径。如果您想从任何目录或页面检索 Cookie,则可以为空。
安全 - 如果此字段包含“安全”一词,则 Cookie 只能通过安全服务器检索。如果此字段为空,则不存在此类限制。
名称=值 - Cookie 以键值对的形式设置和检索。
Cookie 最初是为 CGI 编程设计的,Cookie 的数据在 Web 浏览器和 Web 服务器之间自动传输,因此服务器上的 CGI 脚本可以读取和写入存储在客户端的 Cookie 值。
VBScript 还可以使用 *Document* 对象的 cookie 属性来操作 Cookie。VBScript 可以读取、创建、修改和删除应用于当前网页的 Cookie。
存储 Cookie
创建 Cookie 的最简单方法是将字符串值赋给 *document.cookie* 对象,如下所示:
语法
document.cookie = "key1 = value1;key2 = value2;expires = date"
这里的 *expires* 属性是可选的。如果您使用有效的日期或时间提供此属性,则 Cookie 将在给定的日期或时间过期,之后 Cookie 的值将不可访问。
示例
以下是如何在 *input* Cookie 中设置客户名称的示例。
<html> <head> <script type = "text/vbscript"> Function WriteCookie If document.myform.customer.value = "" Then msgbox "Enter some value!" Else cookievalue = (document.myform.customer.value) document.cookie = "name = " + cookievalue msgbox "Setting Cookies : " & "name = " & cookievalue End If End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
它将产生以下结果。现在在文本框中输入一些内容,然后按“设置 Cookie”按钮来设置 Cookie。
现在,您的系统有一个名为 *name* 的 Cookie。您可以使用多个以逗号分隔的 *键=值* 对来设置多个 Cookie。您将在下一节中学习如何读取此 Cookie。
读取 Cookie
读取 Cookie 与写入 Cookie 一样简单,因为 *document.cookie* 对象的值就是 Cookie。因此,您可以随时使用此字符串来访问 Cookie。*document.cookie* 字符串将保留以分号分隔的 *名称=值* 对列表,其中 *名称* 是 Cookie 的名称,而值是其字符串值。您可以使用字符串的 *split()* 函数将字符串分解为键和值,如下所示:
示例
以下是如何获取上一节中设置的 Cookie 的示例:
<html> <head> <script type = "text/vbscript"> Function ReadCookie allcookies = document.cookie msgbox "All Cookies : " + allcookies cookiearray = split(allcookies,";") For i = 0 to ubound(cookiearray) Name = Split(cookiearray(i),"=") Msgbox "Key is : " + Name(0) + " and Value is : " + Name(1) Next End Function </script> </head> <body> <form name = "myform" action = ""> <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/> </form> </body> </html>
注意 - 这里,*UBound* 是 *Array* 类的方法,它返回数组的长度。我们将在单独的章节中讨论数组;在此之前,请尝试理解它。
它将产生以下结果。现在,按“获取 Cookie”按钮查看您在上一节中设置的 Cookie。
注意 - 您的计算机上可能已经设置了一些其他 Cookie。因此,上面的代码将向您显示计算机上设置的所有 Cookie。
设置 Cookie 过期日期
您可以通过设置过期日期并在 Cookie 中保存过期日期来延长 Cookie 的生命周期,使其超过当前浏览器会话。这可以通过将 *expires* 属性设置为日期和时间来完成。
示例
以下示例说明如何设置一个月后的 Cookie 过期日期:
<html> <head> <script type = "text/vbscript"> Function WriteCookie() x = now() y = dateadd("m",1,now()) ' Making it to expire next cookievalue = document.myform.customer.value document.cookie = "name = " & cookievalue document.cookie = "expires = " & y msgbox("Setting Cookies : " & "name=" & cookievalue ) End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>
删除 Cookie
有时,您可能想要删除 Cookie,以便后续尝试读取 Cookie 时返回空值。为此,您只需将过期日期设置为过去的时间即可。
示例
以下示例说明如何通过将 Cookie 的过期日期设置为一个月前来删除 Cookie:
<html> <head> <script type = "text/vbscript"> Function WriteCookie() x = now() x = now() a = Month(x)-1 b = day(x) c = year(x) d = DateSerial(c,a,b) e = hour(x) msgbox e f = minute(x) msgbox f d = cdate(d & " " & e & ":" & f) msgbox d cookievalue = document.myform.customer.value document.cookie = "name = " & cookievalue document.cookie = "expires = " & d msgbox("Setting Cookies : " & "name=" & cookievalue ) End Function </script> </head> <body> <form name = "myform" action = ""> Enter name: <input type = "text" name = "customer"/> <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/> </form> </body> </html>