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结束的信息。这样,你就可以作很多种判断统计,例如说每个人的停留时间、站上现在有多少人等等。这样对于站点设计和定位就很有助益。