当前位置:K88软件开发文章中心编程语言AspAsp01 → 文章内容

ASP的Session对象

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2019-1-3 0:44:58

:2010-09-08 07:24:00

Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间。每位访问者都会单独获得一个Session。在Web应用程序中,当一个用户访问该应用时,Session类型的变量可以供这个用户在该Web应用的所有页面中共享数据;如果另一个用户也同时访问该Web应用,他也拥有自己的Session变量,但两个用户之间无法通过Session变量共享信息,而Application类型的变更则可以实现站点多个用户之间在所有页面中共享信息。

1.SessionID属性

该属性返回当前会话的惟一标志,为每一个Session分配不同的编号。

我们使用这个属性可以实现某种控制,如对用户的控制问题。具体要是:针对某个网站的一个模块,当一个会员登录后正在看此模块时,另一个人用同样的会员名登录,就不能浏览这个模块。也就是说,一个会员名同时只能允许一个人浏览此模块。通过用会员名(假设为UserID,惟一)和SessionID来实现了控制。当会员登录时,给这个会员一个Session记录登录状态,如:Session("Status")="Logged",同时把这个会员的Session.SessionID写入数据库。当他要浏览此模块时,先判断其是否登录,若已经登录再判断它的SessionID是否与数据库记录的相同,如果不同则不能访问。这样,当另一个用户用相同的会员名登录时,那么数据库中记录的就是新的SessionID,前者访问此模块时就不能通过检查。这就实现了一个会员名同时只能一个人浏览某个模块。这个功能在一些收费网站有特殊作用,它防止了一个会员名给多个人浏览的问题,为公司保障了利益。

2.TimeOut属性

该属性用来定义用户Session对象的时限。如果用户在规定的时间内没有刷新网页,则Session对象就会终止,一般默认为20min。

3.Abandon方法

该方法是Session对象的惟一方法,可以清除Session对象,用来消除用户的Session对象并释放其所占的资源,如:<% Session.Abandon %>。

4.Session_OnStart和Session_OnEnd事件

和Application一样,当对象的例程每一次启动时触发Session_OnStart事件,然后运行Session_Onstart事件的处理过程。也就是说,当服务器接收到应用程序中的URL的HTTP请求时,触发此事件,并建立一个Session对象。同理,这个事件也必须定义在Global.asp文 件中。

当调用Session.Abandon方法时或者在TimeOut的时间内没有刷新,即会触发Session _OnEnd事件,然后执行其中的脚本。Session变量与特定的用户相联系,针对某一个用户赋值的Session变量是和其他用户的Session变量完全独立的,不会存在相互影响。

5.Session应用实例

利用Session对象的OnStart和OnEnd可以记录访问者登录Web站点的开始时间,然 后可以得到访问者离开Web站点的时间,从而可以得到访问者在站点上的停留时间。其代码如下:

<%
              Sub session_Onstart
              session("startime")=NOW
              logonfile=sever.MapPath("logon.txt")
              session("logonfile")= logonfile
              end Sub

              Sub session_Onend
              Set myobject.Create("scripting.FileSystemObject")
              Logonfile= session("logonfile")
              Set myTS=MyObj.OpenTextfile(logonfile,3)
              MyTS.writeline"登录时间:"&session("startime")
              MyTS.writeline"离开时间:"&NOW
              MyTS.writeline" "
              MyTS.close
              end Sub
         %>



ASP的Session对象