当前位置: 首页 > 图文教程 > 网络编程 > ASP > 关于Global.asa文件的深入研究与session变量失效提示的具体方法

ASP
关于网站文件自动备份程序的一点思考
DBTree 1.3.2
抽取10万条数据,想起GetRows()
一份ASP内存的释放的实验报告
[整理版]ASP常用内置函数
Jmail组件发送邮件之绝对能用的函数
虚拟主机重启代码
Access 开发人员常犯错误大全
用Asp如何实现防止网页频繁刷新?
ASP 中使用 HTTP 协议发送参数详解
为什么 Windows2003 的 IIS6.0 不能上传超过 200K 的文件?
ASP类的写法
实例学习如何在ASP中调用DLL
被动式统计网站在线人数
[原创]完美解决ASP 不能更新。数据库或对象为只读。
5天学会asp
Wrance的图片系统目录直读版1.0
信息发布中的判断过期和有效期的东西
小偷程序2
一个ASP中的数组

ASP 中的 关于Global.asa文件的深入研究与session变量失效提示的具体方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 175 ::
收藏到网摘: n/a

       一:Global.asa文件的释疑!从字面上讲!Global就是全局的,全球的意思!
   我们都知道!浏览器中的变量存活期十分短暂!只有几十秒!也就是一个页面的下载时间。那么我们怎样从生命开始
  到结束都追踪session级变量哪?靠asp文件已经力不从心了!微软告诉我们:靠我们的Global.asa吧!
   global.asa是一个可选的文件!他必须放在你的www根目录下,或是虚拟目录的根目录下。这样,可以确保你的一个应
  用程序共享一个global.asa文件。正是他可以在你的应用程序开始始终追踪应用程序对象与会话对象。
  
  二:Global.asa文件的组成与用法释疑!
   为了让服务器纪录单独用户的线程。Global.asa文件必须指定
  <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
  .......
  </SCRIPT>
  而runat=server这行文字告诉我们他确实是在服务器上执行的。(所以你不可能用msgbox()的函数,也不可能用
  document.write的方法提示用户或写一些什么!后有详述)
  完整的用法是:
  <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
  
  Sub Application_OnStart
  . . .
  End Sub
  
  Sub Application_Onend
  . . .
  End Sub
  
  Sub session_OnStart
  . . .
  End Sub
  
  Sub session_Onend
  . . .
  End Sub
  
  </SCRIPT>
  
  而整个过程是这样的。当你访问一个站点文件。如果是html的,则程序不会运行!因为里面不可能有application,session
  对象的发生。如果是asp文件,则服务器首先检测www的根目录,或虚拟目录的根目录有没有global.asa文件。如有,则运
  行程序内的相应代码!但是请注意,如果你的asp文件中并没有建立实例化的application,session。服务器同样不追踪
  你!
   另外:值得注意的是:在Onstart事件发生时,服务器的任何对象都可以使用!
  但是当onend事件发生时。则应注意session_Onend中只允许server,application,session对象运行。但实际上限制更多。
  你不能在其中运行server.mapth方法。而且不可以再对session进行附值。
  
  三:如何在session对象失效时提醒用户---失效后
   终于开始讨论有用的话题了!这也是许多网友关心的问题!
   首先,我们讨论失效后如何提醒。
   这也要提醒吗?直接检测session("**")得值就可以吗?(**为你要检测其session("**")是否失效的值!)这样并不
  好,因为第一次上来的人也可能其session("**")为空!
   那么,我们来看看,该功能具体用在什么地方。最明显的例子为购物网页,如果你用session来存储购物车。你必须告
  诉他他的购物车是否失效(如果再购物期间用户出去了,或是肚子不舒服了临时干了什么!session的值可能失效!)
   有的想法是一失效就给出提示。可惜很难实现!因为session_onend事件在服务器端执行!不可能及时的传过来告诉
  你,除非用server push的方法。其实也不好!如果你不在,或是没有了连接,他同样无法完成。
   所以只有用户再次登陆时告诉你你的上一次购物未完成,只有重新登陆!
   这下就好实现了。针对与单独的客户,如果他开始购物了那么他将触发session_onstart事件的发生。这样你在
  global.asa中对其客户端做标记!代码如下:
  <SCRIPT LANGUAGE=ScriptLanguage RUNAT=Server>
  .....
  Sub session_OnStart
   response.cookies("flag")=1
  End Sub
  ......
  </script>
  然后在你的检测代码中写下检测代码
  flag=request.cookies("flag")
  
  if flag=1 and session(**)="" then
   response.write "你的上一次登陆已过期了"
   response.end
  elseif session(**)="" then
   response.write "你还没有登陆"
  end if
  你可以将其写成一个文件,然后用<--#include....-->包含进你需要检测的文件中,这样就可以完成对其检测了!
  
  那为什么