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

ASP
asp搜索两个以上的词的原理
如何使用花生壳?
asp汉字转换成汉语拼音代码
asp程序实现伪静态的代码
asp处理xml数据的发送、接收类
ASP中使用jmail发送邮件的函数
asp中获取字符串中的时间字符串
ASP按照字数限制自动截取标题内容
asp中将内容生成word文档的函数
用ASP自动清空IE缓存里的内容
asp检测conn.execute是否执行成功的函数
自动获取当前页面URL的ASP函数
ASP采集中获取网页内所需的html代码
asp图片采集并且本地重命名保存的函数
如何使用asp去字符串中的超链接
asp网站通过限制请求防止被采集的函数
asp利用正则去掉字符串中所有html内容
用ASP取出HTML里面的图片地址的函数
fso实现整个文件夹内容的复制到另一个文件夹中
适合所有表的添加、删除、修改的函数

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


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