CNET中国旗舰网站

ZDNet China | CNET科技资讯网 | 政府采购 | 行业网站联盟





 
标题: [问答] 请问asp验证session会话的问题?
CNET开发专家团
专家组
Rank: 10Rank: 10Rank: 10



UID 259939
精华 1
积分 53
帖子 4
威望 -2
ZD币 16 元
阅读权限 255
注册 2007-11-9
状态 离线
  楼主
发表于 2008-3-18 10:19  资料  个人空间  短消息  加为好友 
开发者在线

请问asp验证session会话的问题?

懂点了,一整晚没睡觉,现在请问验证session会话的问题?
<br>
<br>我在1.asp中写了:
<br>&lt;% session.abandon %&gt;
<br>&lt;% session("user")="admin" %&gt;
<br>当前用户的为:&lt;% response.write session("user") %&gt;&lt;br&gt;
<br>当前用户的id为:&lt;% response.write session.sessionid %&gt;&lt;br&gt;
<br>&lt;a href="2.asp"&gt;2.asp&lt;/a&gt;
<br>
<br>我在2.asp中写了
<br>&lt;% response.write session.sessionid %&gt;
<br>&lt;br&gt;
<br>&lt;% response.write session("user") %&gt;
<br>
<br>看了回答之后,我又作了很久的测试:
<br>
<br>第一个问题,原理:
<br>
<br>用户进入1.asp后(先不管有没写session.abandon结束会话)这条语句,先与iis建立连接session会话,
<br>
<br>然后分配id号和赋给变量值,然后才是执行session.abandon这条语句,并结束会话,然后输出html内容
<br>
<br>给用户,这时iis输出给用户的内容虽然id值为441333216,变量值为admin并显示在了用户客户端的浏览器上
<br>
<br>但是这是一个假相,因为虽然这时用户可以直观的看到所反馈的id值和变量值,但是这个时候iis服务器端早已经
<br>
<br>执行了session.abandon这条语句,把iis和客户端的会话已经给断除掉了,有证据可以充分的证明已经断除掉了
<br>
<br>我再把1.asp这个页面重新刷新一次,刷新的意思就是重新把1.asp这个页面再向iis服务器请求一次session,发现输出id的值
<br>
<br>已经改变成了441333217,和输出的变量值为admin,这就说明了第一次会话是已经断除掉了的,其实第二次输出给用户后也是断除掉的了因为
<br>
<br>使用了session.abandon嘛.只是只能在用户客户端上刷新才看的出.那么再请问第二次刷新后输出的变量值为admin,是属于第一个用户还是
<br>
<br>属于第二个用户呢,怎么判断呢,可以这样判断,可以根据两次用户所得到id的不同,来判断第二次刷新1.asp页面后,
<br>
<br>显示的变量值admin是属于第二个用户的,并不是属于第一个用户的,因为第一次的会话已经结束了,你刷新请求的是第二个用户,所以第一个用户
<br>
<br>的变量值admin和刷新后第二个用户的变量值admin它们的属性是不同的.根据id的不同,虽然是同名的变量值但是他们的属性是不同的.
<br>
<br>第二个问题:
<br>
<br>那第二次刷新1.asp该页后,输出给用户的变量值为什么还是admin呢,变量值admin并没有消失还存在呢?
<br>
<br>因为你请求的是1.asp同一个页面(注意是同一个页面)又因为1.asp里有写赋值语句,你请求的是同一个页面,所以再一次的把
<br>
<br>session("user")变量的值admin读出来.注意:输出给用户id值和变量值的同时,会话也同时结束了.用户浏览器看到的只是假相,服务器这个时候
<br>
<br>早把会话给结束掉了,存在服务器端上的变量值admin和id号被清除掉了.
<br>
<br>第三个问题:
<br>
<br>那为什么点1.asp页面里的超级链接跳转到2.asp就不会显示变量值admin呢?
<br>
<br>那是因为,iis服务器在1.asp中把变量值admin和id号输出给用户之后就已经把会话结束掉了,要知道会话一结束所有变量值和id号将被清除的
<br>
<br>又因为会话已经结束掉了,而且所有变量值也都被清除掉了,说白了就是该用户已经死掉了,所以你跳到2.asp后就是新的用户,也就是再向服务器
<br>
<br>请求新的session会话,得到新的用户id值了,以前的所有旧用户的变量值和id号根本就不会继承过来给新用户了,就是这个道理



这是一篇来自百度知道的问题

顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
CNET开发专家团
专家组
Rank: 10Rank: 10Rank: 10



UID 259939
精华 1
积分 53
帖子 4
威望 -2
ZD币 16 元
阅读权限 255
注册 2007-11-9
状态 离线
  沙发
发表于 2008-3-18 10:19  资料  个人空间  短消息  加为好友 
------------



这是一篇来自百度知道的问题

顶部
热点频道推荐: C/S开发| 数据库| WEB开发| 嵌入式| 项目管理|
 



当前时区 GMT+8, 现在时间是 2009-7-4 13:57

  Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
Processed in 0.198759 second(s), 3/3 queries

清除 Cookies - 联系我们 - ZDNetChina中文社区 - 无图版