[经验]渚薰的ASP畅谈(六)global.asa文件解惑☆☆☆
这今天留意了不少帖子,其中这两天在讨论一个问题,关于限制登录技术的处理。也有很多朋友发表了意见,大致上就是用一个online字段来分辨,此不在多说这个。关键是有人提出,当用户未正常注销的情况下,如何处理online字段的问题。针对这个问题,我补充一个小知识(可能许多初学asp甚至已经接触了相当时间的asp人员都会忽略的东西)-asp网站全局共享文件global.asa。<BR><BR>再我回复的某个帖子中,有人误认为,这是一个表(这也难怪,后缀是asa……)。其实,这个文件是整个asp网站所共享拥有的文件,也可以所成是服务器检查整个asp网站配置的文件。首先,这个文件需放在网站根目录下,以gloabl.asa命名。<BR>那么,这个文件到底有什么作用呢。这个文件里面一共有四个过程,而且只能有这么四个过程,分别是<BR><script language="VBScript" runat="Server"><BR> <BR> Sub Application_OnStart<BR> 'TODO sth.<BR> End Sub<BR><BR> Sub Application_OnEnd<BR> 'TODO sth.<BR> End Sub<BR><BR> Sub Session_OnStart<BR> 'TODO sth.<BR> End Sub<BR><BR> Sub Sessin_OnEnd<BR> 'TODO sth.<BR> End Sub<BR></script><BR><BR>那么这四个过程定义了有什么用呢,如下我们描述四个服务器状态<BR>1、服务器启动初次运行该asp网站(开启服务器会话状态)<BR>2、某用户打开浏览器,访问该asp网站(开启用户会话状态)<BR>3、某用户关闭浏览器,结束一次对整个asp网站的浏览(关闭用户会话状态)<BR>4、服务器关闭或结束该asp网站(关闭服务器会话状态)<BR><BR>这服务器状态所触发的事件就分别对应这四个过程<BR>1、Application_OnStart<BR>2、Session_OnStart<BR>3、Session_OnEnd<BR>4、Application_OnEnd<BR><BR>当服务器状态触发这四个过程的某一个过程时,就可以在这个过程里编写相应的代码,来实现一些特殊功能,举例<BR>1、有些网站,当你第一次访问时,并不允许你访问除index.htm以外的页面,这个如何来做的呢?当用户第一次访问该网站时,触发Session_OnStart事件。在Session_OnStart过程里判断,当前用户浏览的网址是否为index.htm,如不是则跳转自index.htm<BR>2、大家对Session应该很熟悉了,但我相信,极少人会去注意另一个会话变量,application。对于这两个会话级变量,我希望接触asp的朋友都能认真的去了解他们的特性(session是用户级会话变量,application是服务器级会话变量)。对于这些会话变量,我们都可以在四个过程中进行操作。比如,在Session_OnStart过程中,把Session("login")赋值为false等等,在Session_OnEnd过程中,显式释放Session变量,即Session.Abandon()。<BR>3、最后一个例子回到最开始的主题,如何处理用户非正常注销的问题。针对Session_OnEnd事件的特性,即只要在Session_OnEnd过程里,处理用户离线(或退出的状态就可以了)。针对Session两个的事件,以及application的服务器变量特性,甚至可以不必用到数据库就能判断用户是否在线或离线,大致思路如下:<BR> (1)用户初次访问网站时,分配一个ID号,在Session_OnStart事件中,设置Application(该用户ID号)=false,表示未登录状态。<BR> (2)当用户登录时,在程序中置Application(该用户ID号)=true,表示该用户已经登录<BR> (3)他人如果需要检查某人是否是在线状态,只要查看Application(该用户ID号)是否为true(为什么可以这样检查?因为application是服务器级变量,它保存在服务器端的内存中,是对所有用户可见的,即可理解成全局变量)<BR> (4)当用户退出时,在程序中置Application(该用户ID号)=false<BR> (5)当用户关闭浏览器,结束一次会话状态时,在Session_OnEnd过程中,再次置Application(该用户ID号)=false<BR><BR>对于这四个事件过程,以及两个会话变量,最后还是希望各位朋友能够仔细了解他们的特性,从中你会获得许多知识,并能想到解决一些本无法处理的技术问题 顶了,谢谢楼主 lz说的极是!我正遇到次麻烦问题!
用户正常登陆,关闭IE无法显示已退出系统!
希望楼主能举例说明!
不胜感激! 楼上的朋友,请仔细参考我举例里面的第三条,我以把你所遇到的问题解决的思路列了一下,我这里不再给出具体代码,因为具体代码牵涉到很多逻辑关系,不是一个function一个sub能解决。如对于我的思路有些不明,请直接指出,我会给你解答。 收集中。。。 楼主辛苦了
页:
[1]
