欢迎光临
我们一直在努力

建站超值云服务器,限时71元/月

读取 cookie 集合

  前面的示例假设您要读取名称已知的 cookie。有时,您可能需要读取可供页面使用的所有 cookie。要读取可供页面使用的所有 cookie 的名称和值,您可以利用如下代码遍历 request.cookies 集合:

dim i as integer

dim output as string = ""

dim acookie as httpcookie

for i = 0 to request.cookies.count – 1

acookie = request.cookies(i)

output &= "cookie 名称 = " & server.htmlencode(acookie.name) & "<br>"

output &= "cookie 值 = " & server.htmlencode(acookie.value) & _

& "<br><br>"

next

label1.text = output

  注意:运行此代码时,您很可能会看到一个名为“asp.net_sessionid”的 cookie,asp.net 用这个 cookie 来保存您的会话的唯一标识符。这个会话 cookie 不会永久保存到您的硬盘上。有关会话 cookie 的详细信息,请参阅本文后面的 cookie 和会话状态。

前面的示例有一个限制:如果 cookie 有子键,就会以一个单独的名称/值字符串来显示子键。cookie 的 haskeys(英文)属性可以告诉您该 cookie 是否有子键。如果有子键,您可以在子键集合中向下钻取,获取各个子键的名称和值。

  如前文所述,您可以从 cookie 属性 values(英文)中获取有关子键的信息,该属性是类型 namevaluecollection 的集合。您可以根据索引值从 values 集合中直接读取子键值。相应的子键值可以从 values 集合的成员 allkeys(英文)中得到,该成员将返回一个字符串集合。

  以下示例是对前一示例的修改。示例中使用 haskeys 属性来测试子键,如果检测到子键,就从 values 集合中获取子键:

dim i as integer

dim j as integer

dim output as string = ""

dim acookie as httpcookie

dim subkeyname as string

dim subkeyvalue as string

for i = 0 to request.cookies.count – 1

acookie = request.cookies(i)

output &= "名称 = " & acookie.name & "<br>"

if acookie.haskeys then

for j = 0 to acookie.values.count – 1

subkeyname = server.htmlencode(acookie.values.allkeys(j))

subkeyvalue = server.htmlencode(acookie.values(j))

output &= "子键名称 = " & subkeyname & "<br>"

output &= "子键值 = " & subkeyvalue & "<br><br>"

next

else

output &= "值 = " & server.htmlencode(acookie.value) & "<br><br>"

end if

next

label1.text = output

  您也可以把子键作为 namevaluecollection 对象进行提取,如下所示:

if acookie.haskeys then

dim cookievalues as _

system.collections.specialized.namevaluecollection = acookie.values

dim cookievaluenames() as string = cookievalues.allkeys

for j = 0 to cookievalues.count – 1

subkeyname = server.htmlencode(cookievaluenames(j))

subkeyvalue = server.htmlencode(cookievalues(j))

output &= "子键名称 = " & subkeyname & "<br>"

output &= "子键值 = " & subkeyvalue & "<br><br>"

next

else

output &= "值 = " & acookie.value & "<br><br>"

end if

  注意:请记住,我之所以调用 server.htmlencode 方法,只是因为我要在页面上显示 cookie 的值。如果您只是测试 cookie 的值,就不必在使用前对其进行编码。

  修改和删除 cookie

  有时,您可能需要修改某个 cookie,更改其值或延长其有效期。(请记住,由于浏览器不会把有效期信息传递到服务器,所以您无法读取 cookie 的过期日期。)

  当然,实际上您并不是直接更改 cookie。尽管您可以从 request.cookies 集合中获取 cookie 并对其进行操作,但 cookie 本身仍然存在于用户硬盘上的某个地方。因此,修改某个 cookie 实际上是指用新的值创建新的 cookie,并把该 cookie 发送到浏览器,覆盖客户机上旧的 cookie。

  以下示例说明了如何更改用于储存站点访问次数的 cookie 的值:

dim counter as integer

if request.cookies("counter") is nothing then

counter = 0

else

counter = cint(request.cookies("counter").value)

end if

counter += 1

response.cookies("counter").value = counter.tostring

response.cookies("counter").expires = datetime.now.adddays(1)

  或者:

dim ctrcookie as httpcookie

dim counter as integer

if request.cookies("counter") is nothing then

ctrcookie = new httpcookie("counter")

else

ctrcookie = request.cookies("counter")

end if

counter = cint(ctrcookie.value) + 1

ctrcookie.value = counter.tostring

ctrcookie.expires = datetime.now.adddays(1)

response.cookies.add(ctrcookie)

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 »
分享到: 更多 (0)

相关推荐

  • 暂无文章