标题:[经验]渚薰的ASP畅谈(六)global.asa文件解惑☆☆☆
只看楼主
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
 问题点数:0 回复次数:5 
[经验]渚薰的ASP畅谈(六)global.asa文件解惑☆☆☆
这今天留意了不少帖子,其中这两天在讨论一个问题,关于限制登录技术的处理。也有很多朋友发表了意见,大致上就是用一个online字段来分辨,此不在多说这个。关键是有人提出,当用户未正常注销的情况下,如何处理online字段的问题。针对这个问题,我补充一个小知识(可能许多初学asp甚至已经接触了相当时间的asp人员都会忽略的东西)-asp网站全局共享文件global.asa。

再我回复的某个帖子中,有人误认为,这是一个表(这也难怪,后缀是asa……)。其实,这个文件是整个asp网站所共享拥有的文件,也可以所成是服务器检查整个asp网站配置的文件。首先,这个文件需放在网站根目录下,以gloabl.asa命名。
那么,这个文件到底有什么作用呢。这个文件里面一共有四个过程,而且只能有这么四个过程,分别是
<script language="VBScript" runat="Server">

Sub Application_OnStart
'TODO sth.
End Sub

Sub Application_OnEnd
'TODO sth.
End Sub

Sub Session_OnStart
'TODO sth.
End Sub

Sub Sessin_OnEnd
'TODO sth.
End Sub
</script>

那么这四个过程定义了有什么用呢,如下我们描述四个服务器状态
1、服务器启动初次运行该asp网站(开启服务器会话状态)
2、某用户打开浏览器,访问该asp网站(开启用户会话状态)
3、某用户关闭浏览器,结束一次对整个asp网站的浏览(关闭用户会话状态)
4、服务器关闭或结束该asp网站(关闭服务器会话状态)

这服务器状态所触发的事件就分别对应这四个过程
1、Application_OnStart
2、Session_OnStart
3、Session_OnEnd
4、Application_OnEnd

当服务器状态触发这四个过程的某一个过程时,就可以在这个过程里编写相应的代码,来实现一些特殊功能,举例
1、有些网站,当你第一次访问时,并不允许你访问除index.htm以外的页面,这个如何来做的呢?当用户第一次访问该网站时,触发Session_OnStart事件。在Session_OnStart过程里判断,当前用户浏览的网址是否为index.htm,如不是则跳转自index.htm
2、大家对Session应该很熟悉了,但我相信,极少人会去注意另一个会话变量,application。对于这两个会话级变量,我希望接触asp的朋友都能认真的去了解他们的特性(session是用户级会话变量,application是服务器级会话变量)。对于这些会话变量,我们都可以在四个过程中进行操作。比如,在Session_OnStart过程中,把Session("login")赋值为false等等,在Session_OnEnd过程中,显式释放Session变量,即Session.Abandon()。
3、最后一个例子回到最开始的主题,如何处理用户非正常注销的问题。针对Session_OnEnd事件的特性,即只要在Session_OnEnd过程里,处理用户离线(或退出的状态就可以了)。针对Session两个的事件,以及application的服务器变量特性,甚至可以不必用到数据库就能判断用户是否在线或离线,大致思路如下:
(1)用户初次访问网站时,分配一个ID号,在Session_OnStart事件中,设置Application(该用户ID号)=false,表示未登录状态。
(2)当用户登录时,在程序中置Application(该用户ID号)=true,表示该用户已经登录
(3)他人如果需要检查某人是否是在线状态,只要查看Application(该用户ID号)是否为true(为什么可以这样检查?因为application是服务器级变量,它保存在服务器端的内存中,是对所有用户可见的,即可理解成全局变量)
(4)当用户退出时,在程序中置Application(该用户ID号)=false
(5)当用户关闭浏览器,结束一次会话状态时,在Session_OnEnd过程中,再次置Application(该用户ID号)=false

对于这四个事件过程,以及两个会话变量,最后还是希望各位朋友能够仔细了解他们的特性,从中你会获得许多知识,并能想到解决一些本无法处理的技术问题
搜索更多相关主题的帖子: asa global 服务器 ASP 文件 
2006-08-09 14:08
mako
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-8-1
得分:0 
顶了,谢谢楼主

2006-08-09 15:41
mz520888
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-7-25
得分:0 
lz说的极是!
我正遇到次麻烦问题!
用户正常登陆,关闭IE无法显示已退出系统!
希望楼主能举例说明!
不胜感激!
2006-08-09 22:29
渚薰
Rank: 6Rank: 6
等 级:贵宾
威 望:22
帖 子:1132
专家分:0
注 册:2006-8-6
得分:0 
楼上的朋友,请仔细参考我举例里面的第三条,我以把你所遇到的问题解决的思路列了一下,我这里不再给出具体代码,因为具体代码牵涉到很多逻辑关系,不是一个function一个sub能解决。如对于我的思路有些不明,请直接指出,我会给你解答。

个人ajax技术专题站: " target="_blank">http://www. 我不会闲你烦,只会闲你不够烦!
2006-08-09 22:33
神州游侠
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2006-5-20
得分:0 
收集中。。。

2007-01-02 00:48
cslldu
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-4-12
得分:0 
楼主辛苦了
2008-06-17 21:57



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-83004-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013721 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved