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

ASP
ASP六大对象介绍
使用Filter实现信息的二次检索
让弹出窗口变得“听话”一些
在ASP中利用“正则表达式” 对象实现UBB风格的论坛
“Web 匿名用户”帐户密码的位置
对一些编程初学者的良言警句
ASP编程中15个非常有用的例子
精彩:ASP遗留的二十大积习
关于Asp代码与页面的分离
教大家如何利用ASP打造网站论坛DIY(1)
教大家如何利用ASP打造网站论坛DIY(2)
网站安全:防范ASP木马的十大基本原则
用ASP设计一个留言薄
趣味访客计数器设计两则
我的ASP之旅—二级联动菜单制作
ASP编程--新手上路篇:ASP技术简介
用ASP实现网上考试系统
请注意!常见的ASP脚本攻击及防范技巧
ASP开发的WAP格式简易邮件系统实例
asp基础教程:网页间数据传递方法小结

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 115 ::
收藏到网摘: 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....-->包含进你需要检测的文件中,这样就可以完成对其检测了!
  
  那为什么