目录

  1. Session 对象简介
  2. Session 变量的存储与读取
  3. Session 变量的生命周期
  4. Session.Abandon 方法
  5. Session.Timeout 属性
  6. SessionID 属性
  7. Session.Contents 集合
  8. Session 事件(Global.asa 文件)
  9. 完整示例代码
  10. 参考资料
  11. 出站链接

1. Session 对象简介

Session 对象用于存储用户会话期间的变量,每个用户的 Session 是独立的,不同用户之间不会共享。

📌 特点

  • 变量仅在当前用户的会话期间有效
  • Session 变量适用于存储用户信息、权限状态等
  • SessionID 唯一标识每个用户的会话
  • 默认超时时间为 20 分钟,可自定义

2. Session 变量的存储与读取

存储 Session 变量

<%
Session("Username") = "zhangsan"
Session("Role") = "Admin"
%>

读取 Session 变量

<%
Response.Write "用户名:" & Session("Username") & "<br>"
Response.Write "角色:" & Session("Role")
%>

检查 Session 变量是否存在

<%
If Session("Username") <> "" Then
    Response.Write "欢迎回来," & Session("Username")
Else
    Response.Write "请先登录"
End If
%>


3. Session 变量的生命周期

📌 Session 变量的生命周期

  1. 用户首次访问网站时,Session 启动
  2. Session.Timeout 时间内不活动,则会话结束
  3. 用户关闭浏览器,Session 可能终止(取决于服务器设置)
  4. 调用 Session.Abandon 可手动结束 Session

4. Session.Abandon 方法

📌 Session.Abandon 方法用于立即销毁当前会话并释放所有 Session 变量。

示例:用户注销

<%
Session.Abandon
Response.Redirect "login.asp"
%>

📌 注意

  • Session.Abandon 只能销毁当前用户的 Session,不会影响其他用户
  • 重新访问网站时,将创建一个新的 SessionID

5. Session.Timeout 属性

📌 Session.Timeout 用于设置 Session 变量的超时时间(单位:分钟),默认值为 20 分钟

修改 Session 超时时间

<%
Session.Timeout = 30 ' 设置超时 30 分钟
%>

📌 注意

  • 超时时间为 Session 变量的非活动时间(用户无请求)
  • 超时后,Session 变量会自动销毁

6. SessionID 属性

📌 SessionID 是服务器分配给每个用户会话的唯一标识符。

获取当前用户的 SessionID

<%
Response.Write "当前 SessionID:" & Session.SessionID
%>

📌 注意

  • SessionID 在整个会话期间保持不变
  • 如果用户关闭浏览器并重新访问,SessionID 可能会更改

7. Session.Contents 集合

📌 Contents 集合存储当前 Session 的所有变量,可以遍历或删除。

遍历所有 Session 变量

<%
Dim key
For Each key In Session.Contents
    Response.Write key & " = " & Session.Contents(key) & "<br>"
Next
%>

删除特定的 Session 变量

<%
Session.Contents.Remove("Username")
%>

清除所有 Session 变量

<%
Session.Contents.RemoveAll
%>


8. Session 事件(Global.asa 文件)

📌 Global.asa 文件可以定义 Session 相关的事件,如 Session_OnStartSession_OnEnd

示例:Global.asa 文件

<SCRIPT LANGUAGE="VBScript" RUNAT="Server">
Sub Session_OnStart
    Session("VisitCount") = 1
End Sub

Sub Session_OnEnd
    Session("VisitCount") = Null
End Sub
</SCRIPT>

📌 事件说明

  • Session_OnStart:用户第一次访问网站时触发
  • Session_OnEndSession 终止时触发(超时或 Session.Abandon

9. 完整示例代码

<%
' 设置 Session 变量
Session("Username") = "zhangsan"
Session("Role") = "Admin"
Session.Timeout = 30

' 显示 Session 信息
Response.Write "<h2>ASP Session 对象示例</h2>"
Response.Write "用户名:" & Session("Username") & "<br>"
Response.Write "角色:" & Session("Role") & "<br>"
Response.Write "Session 超时时间:" & Session.Timeout & " 分钟<br>"
Response.Write "SessionID:" & Session.SessionID & "<br>"

' 遍历所有 Session 变量
Response.Write "<h3>所有 Session 变量:</h3>"
Dim key
For Each key In Session.Contents
    Response.Write key & " = " & Session.Contents(key) & "<br>"
Next
%>


10. 参考资料


11. 出站链接


掌握 ASP Session 对象,你就能轻松管理用户状态、存储用户数据,并优化会话控制!🚀