Session对象

【知识点回顾】
1、变量的实质:是一个存储单元在内存空间中的一个符号化的地址。
2、变量的作用域:是指定变量的有效范围。
分为:
过程级变量:作用域仅局限于该过程或函数内部。
脚本级变量:作用域为当前的整个ASP页面。
【引入】
从这里我们可以看出,变量的作用域最大也仅是当前页面范围。这给页面与页面之间的数据传递和记录会话状态造成一定的困难。为此,ASP提供了Session和Application对象以及ASP的工程文件global.asa。
ASP允许开发者利用会话这一工具从一个页面到另一个页面跟踪用户。当用户打开一个建立会话的ASP网页时,会话被建立,用户在该站点从一个页面浏览到另一个页面时,会话将会继续,直到该用户长时间不访问该站点或关闭该站点的所有窗口,或者打开了一个终止会话的ASP网页。
【新课】
1、创建Session对象
我们可以利用Session对象存储普通变量或对象变量,创建出具有Session级作用域的变量。Session对象创建的变量我们可以用于存储和记录用户信息。
创建方法:Session(“变量名”)
说明:
创建之后,就可将Session(”变量名”)作为一个整体,按照普通变量的用法来使用。
例:若要创建一个Session级的变量passflg,并且给该变量赋初值为0。
    <% Session(“passflg”)=0 %>
2、Session对象的属性
1)、SessionID:
返回当前会话的会话标识符。它是由服务器在生成会话时,通过复杂算法产生的一组数值,它惟一地标识了每个用户的会话。
例:输出当前会话的标识符
    <%=Session.SessionID%>
2)、TimeOut:
        以分钟为单位定义Session会话超时的时间期限。
        会话超时的时限可在IIS服务器中设置,其默认值为20分钟。也可在页面中利用该属性来设置。
    例:若设置会话超时的时间为5分钟。
       <% Session.TimeOut=5 %>
         说明:
在设置TimeOut属性时,可根据具体需要确定数值。如果该值太小,超时会过于频繁的发生,如果该值太大,可能会消耗过多的服务器资源。
3、Session对象的方法
Abandon方法:结束当前会话
   用法:
         <% Session.Abandon %>
说明:
Abandon方法用于主动结束会话,若没有调用该方法,当会话超时后,也会自动结束当前会话。
4、Session对象的集合
Contents集合:包含一个会话建立的所有变量。
Contents集合用来确定某一个会话变量的值,或者用一个循环来检索所有会话变量的值。
语法:
Session.Contents(“变量名”)或者Session(“变量名”)


Session对象使用实例:
course.asp页面需要授权访问,在访问该页面之前,要求输入用户名和密码,并进行校验,若密码正确,则允许访问,若不正确,则输出相应的提示信息。在course.asp页面中,为防止用户直接访问,要求对访问用户是否授权进行判断,若未授权,则返回到密码校验页面。
分析:可单独设计一密码校验页面,如checkuser.htm,用以接收用户名和密码,若密码正确,则引导到course.asp页面,并设置授权标志变量为1,在course.asp页面中,通过判断授权标志变量是否为1,来决定是否允许访问。
而由上课开始的知识回顾里我们知道,脚本级变量的作用域仅限于当前页面,而此处授权标志变量需要跨页面传递数据,因此,我们需要用Session对象创建一个具有Session作用域的变量。

流程图:

 

 

                                        验证失败,返回登陆页面


                         验证成功

 


实现代码:
checkuser.htm
<html>
<head><title>用户校验</title></head>
<body>
<form name=”checkuser” method=”post” action=”check.asp”>
用户名:<input type=”text” name=”username”><br/>
密码:<input type=”password” name=”password”><br/><br/>
<input type=”submit” value=”确定”><input type=”reset” value=”取消”>
</form>
</body>
</html>


check.asp
<%
dim user,pass
user=Request.Form(“username”)  ‘从表单中获得名称为username界面对象的值
pass=Request.Form(“password”)  ‘从表单中获得名称为password界面对象的值
If pass=”okpass” and user=”okuser” Then
Session(“passflg”)=1              ‘设置授权标志
Response.Redirect “course.asp”      ‘跳转到course.asp页面
Else
Session(“passflg”)=0               ‘设置未授权标志
Response.write “密码错误!<br/><a href=’checkuser.htm’>返回</a>”
End if
%>

course.asp
开始处放入以下代码:
<% If Session(“passflg”)=0 Then Response.Redirect “checkuser.htm” %>
    ‘检测用户是否被授权,如果已授权,则显示页面,如果未授权,则跳转到登录页面checkuser.htm
【实例指导】
引用:某回贴.虽然是ASP的,但是原理和.NET差不多,所以载上来

posted on 2006-09-05 09:31  MainIsUsed  阅读(470)  评论(0编辑  收藏  举报