Sessions

事件

和其他对象不同的是，Session对象中有事件（Event）。一共两种：Session_OnStart事件，当一个Session开始时被触发。还有Session_OnEnd事件，当一个Session结束时被触发。在一个脚本中你可以和其中一个并且只能和其中一个事件关联。

在事件触发时下面这些脚本的语句被执行。这两个脚本位于特定的文件Global.asa。这个文件位于你的网站应用的根目录。它包括了一些通用程序段和你的网站应用。Global.asa文件有如下结构：

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Application_OnStart

END SUB

</SCRIPT>

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Application_OnEnd

END SUB

</SCRIPT>

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Session_OnStart

END SUB

</SCRIPT>

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Session_OnEnd

END SUB

</SCRIPT>

注意

下一章提供更加详细的关于Global.asa文件的内容

Global.asa

包括四个脚本。这里面有一个是根据Session_OnStart触发，另一个是根据Session_OnEnd触发（下一章介绍剩下的另外两个脚本）

请注意Global.asa使用了微软的HTML拓展<SCRIPT>标记语法来限制脚本，这也就是说，你必须用<SCRIPT>标记来引用这两个事件而不能用<%和%>符号引用。例子中Global.asa使用的是VBScript，但是你也可以使用其他脚本语言。

在Global.asa中不能有任何输出语句，无论是HTML的语法还是Response.Write()方法都是不行的，Global.asa是任何情况下也不能进行显示的。

你只需要在Global.asa中添加一些你希望执行的脚本，那么只要Session一创建，这些脚本就会自动执行，例如下例：

<SCRIPT LANGUAGE=VBScipt RUNAT=Server>

SUB Session_OnStart

Session(

“Username”)=“Unknow”

Session(

“Userpassword”)=“Unknow”

END SUB

</SCRIPT>

这个脚本将”Unkonw”值赋给了Username和UserPassword变量。这个例子将在任何一个Session 创建的时候就执行。

Session_Onstart

脚本可以用于很多种目的。例如，你希望访问者必须浏览某一个主页，下面的例子就在用户进程开始时进行了这种引导，那么这里面使用Response.redirect方法。下面是这个例子：

<Script Language=VBScript RUNAT=Server>

SUB Session_OnStart

MyHomepage=

“/homepage.asp”

RequestPage=Request.ServerVariables(

“SCRIPT_NAME”)

IF NOT (STRCOMP(MyHomePage,RequestPage,vbTextCompare)=0) THEN

Response.Redirect MyHomePage

END IF

END SUB

</SCRIPT>

在这个脚本中，用户请求和主页路径进行比较，如果不是一样的，用户就被自动引导到该主页。

下面的例子将Session_OnStart和Session_OnEnd都进行了使用：

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Session_OnStart

Response.AppendToLog Session.SessionID&

” Starting”

END SUB

</SCRIPT>

<SCRIPT LANGUAGE=VBScript RUNAT=Server>

SUB Session_Onend

Response.AppendToLog Session.SessionID&

” Ending”

END SUB

</SCRIPT>

这个例子中，当用户的Session开始时，日志文件中记录了该用户的Session和Starting信息；当用户的Session结束时，日志文件就记录了该用户的Session结束的信息。这样，你就可以作很多种判断统计，例如说每个人的停留时间、站上现在有多少人等等。这样对于站点设计和定位就很有助益。