Session 工具

当您在打算机上操作某个运用程序时,您打开它,做些变动,然后关闭它。
这很像一次对话(Session)。
打算机知道您是谁。
它清楚您在何时打开和关闭运用程序。
然而,在因特网上问题涌现了:由于 HTTP 地址无法保持状态,Web 做事器并不知道您是谁以及您做了什么。

ASP 通过为每个用户创建一个唯一的 cookie 来办理这个问题。
cookie 被传送至用户的打算机上,它含有可识别用户的信息。
这种接口被称作 Session 工具。

phpaspsessionASP Session 对象 CSS

Session 工具用于存储关于用户会话(session)的信息,或者变动用户会话(session)的设置。

存储于 Session 工具中的变量存储单一用户的信息,并且对付运用程序中的所有页面都是可用的。
存储于 session 变量中的公共信息常日是 name、id 和参数。
做事器会为每个新的用户创建一个新的 Session,并在 session 失落效时撤销掉这个 Session 工具。

Session 何时开始?

Session 开始于:

某个新用户要求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序

某个值存储在 Session 变量中

某个用户要求了一个 ASP 文件,并且 Global.asa 利用 <object> 标签通过 session 的 scope 来实例化某个工具

Session 何时结束?

如果用户没有在规定的韶光内在运用程序中要求或者刷新页面,session 就会结束。
默认值为 20 分钟。

如果您想要将超时的韶光间隔设置为比默认值更短或更长,可以利用 Timeout 属性。

下面的实例设置了一个 5 分钟的超时时间间隔:

<%

Session.Timeout=5

%>

要立即结束 session,请利用 Abandon 方法:

<%

Session.Abandon

%>

注释:利用 session 时紧张的问题是它们该在何时结束。
我们不会知道用户最近的要求是否是末了的要求。
因此我们不清楚该让 session \"大众存活\"大众多久。
为某个空闲的 session 等待太久会耗尽做事器的资源。
然而如果 session 被过早地删除,用户就不得不一遍又一各处重新开始,这是由于做事器已经删除了所有的信息。
探求得当的超韶光隔韶光是很困难的!

提示:在 session 变量中仅存储少量的数据!

存储和取回 Session 变量

Session 工具最大的优点是可在个中存储变量,以供后续的网页读取,其运用范围是很广的。

下面的实例把 \"大众Donald Duck\公众 赋值给名为 username 的 Session 变量,并把 \"大众50\"大众 赋值给名为 age 的 Session 变量:

<%

Session(\公众username\"大众)=\"大众Donald Duck\"大众

Session(\"大众age\"大众)=50

%>

当值被存储在 session 变量中,它就能被 ASP 运用程序中的任何页面利用:

Welcome <%Response.Write(Session(\公众username\公众))%>

上面这行代码返回的结果是: \公众Welcome Donald Duck\"大众。

您也可以在 Session 工具中存储用户参数,然后通过访问这些参数来决定向用户返回什么页面。

下面的实例规定,如果用户利用低显示器分辨率,则返回纯文本版本的页面:

<%If Session(\"大众screenres\"大众)=\"大众low\"大众 Then%>

This is the text version of the page

<%Else%>

This is the multimedia version of the page

<%End If%>

移除 Session 变量

Contents 凑集包含所有的 session 变量。

可通过 Remove 方法来移除 session 变量。

不才面的实例中,如果 session 变量 \"大众age\公众 的值小于 18,则移除 session 变量 \"大众sale\"大众:

<%

If Session.Contents(\"大众age\公众)<18 then

Session.Contents.Remove(\"大众sale\"大众)

End If

%>

如需移除 session 中的所有变量,请利用 RemoveAll 方法:

<%

Session.Contents.RemoveAll()

%>

遍历 Contents 凑集

Contents 凑集包含所有的 session 变量。
您可以通过遍历 Contents 凑集,来查看个中存储的变量:

<%

Session(\公众username\"大众)=\"大众Donald Duck\"大众

Session(\"大众age\公众)=50

dim i

For Each i in Session.Contents

Response.Write(i & \公众<br>\"大众)

Next

%>

结果:

username

age

如果您不知道 Contents 凑集中的项目数量,您可以利用 Count 属性:

<%

dim i

dim j

j=Session.Contents.Count

Response.Write(\"大众Session variables: \"大众 & j)

For i=1 to j

Response.Write(Session.Contents(i) & \"大众<br>\"大众)

Next

%>

结果:

Session variables: 2

Donald Duck

50

遍历 StaticObjects 凑集

您可以通过遍历 StaticObjects 凑集,来查看存储在 Session 工具中的所有工具的值:

<%

dim i

For Each i in Session.StaticObjects

Response.Write(i & \"大众<br>\公众)

Next

%>