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

ASP
ASP里面令人震撼地Debug类(VBScript)
提供个 全免杀海洋2006asp木马 下载
VBS加密免杀器 下载
asp页面下的乱码问题终于解决了
一款不错的asp木马 黑色界面
七步倒┈→专用asp后门
ASP对网页进行保护的简单代码 ip
asp遍历站点所有文件夹的代码
用js实现QQ在线查询功能
非常不错的ASP+Access数据库的终极安全大法18则
万能Asp防注入代码 拒绝攻击
用asp实现把文件打包成Xml文件包,带解包的ASP工具附下载
asp下实现代码的“运行代码”“复制代码”“保存代码”功能源码
asp字符串加密解密函数
asp adodb.stream对象的方法/属性
asp rs.open sql,conn,3,1中3,1代表什么?
推荐ASP中VBScript常用函数
ASP的Global.asa使用说明
ASP七大对象说明分析
ASP网站生成静态html页面技术小结

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


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