浅谈session_onend的调试

2016-01-29 17:57 26 1 收藏

浅谈session_onend的调试,浅谈session_onend的调试

【 tulaoshi.com - ASP 】

   

    session_onend是比较难调试的,这是因为:
    一、没有出错信息提示(这也难怪,是没有地方提示的,根本不知道要将出错提示信息放到什么地方去)。    
    二、大多数情况下,也不能使用session.abandon来手工释放sesion进行调试——你释放了所有的session,那你在session_onend中不要用到session对象吗?所以,只好傻呼呼的等待session超时了。还好,session超时时域可以自己设,调试时设小点,比如2分钟或1分钟的。
    三、如果你只有一台电脑,那就更难调试了,原因不用我说了吧。
    
    下面我给大家说说我在调试session_onend时的一点点经验:

    一、不要怀疑你的session_onend没有执行(其实开始时我也曾经怀疑过,因为总相信自己的session_onedn事件没有错),常听有些人抱怨:“怎么我的session_onend没有执行,session_onstart是好好的”,当然了,session_onstart容易看到嘛。
    如果你不信的话,你将一个标记放到session_onend的第一行。
    sub session_onend
      application("flag1")="session_onend已经执行了"
      …………后面是你的session_onend的内容
    end sub

    然后等session超时后,用apptest.asp?key=flag1(apptest.asp后面附有)查看application("flag1")的值,你肯定能看到“session_onend已经执行了”。
    所以,一旦你的session_onend没有达到你的目的时,应该检讨你的session_onend事件有没有写好——跟asp文件一样,session_onend一旦遇到错误,马上停止执行……

    二、写session_onend事件时一定要仔细,要保证每个字每都不会错,保证不出现语法,不出现逻辑错误。这个只能你的眼睛和思维能帮上你。
    下面是我在调试聊天室的session_onend事件时的方法,供大学参考:

    我在下面的程序中设了几个标记:flag1,flag2,flag3,flag4,flag5

<SCRIPT LANGUAGE="VBScript" RUNAT="Server"
sub Session_onEnd
ip=session("userip")
application("flag1")=ip      ——标记flag1
chatdata=application("chatdata")
onliuser=application("onliuser")
kicklist=application("kicklist")
uleave=false
for i=0 to 50
  if chatdata(i,1)=ip then
    kicklist=replace(kicklist,",'#"&chatdata(i,0)&"'","")
    onliuser=replace(onliuser,",'"&chatdata(i,0)&"'","")
    chatdata(i,0)=""
    chatdata(i,1)=""
    chatdata(i,2)=0
    chatdata(i,3)=""
    chatdata(i,4)=0
    chatdata(i,5)=""
    uleave=true
    application("flag2")="找到同ip的聊客"     ——标记flag2
  end if
next
kicklist=replace(kicklist,",'"&ip&"'","")
application("flag3")="kicklist的值为:"&kicklist  ——标记flag3
if uleave then
  for i=0 to 50
    chatdata(i,4)=(chatdata(i,4) mod 4)+4
  next
  application("flag4")="执行了通知更新名单"   ——标记flag4
end if
application("flag5")="第4标志"                ——标记flag5
application.lock
  application("kicklist")=kicklist
  application("onliuser")=onliuser
  application("chatdata")=chatdata
application.unlock
application("flag6")="执行了application变量更新"   ——标记flag6
end sub
</script

来源:https://www.tulaoshi.com/n/20160129/1503720.html

延伸阅读
标签: PHP
一、session概述 session是什么,刚开始我也不明白,非专业词典翻译为会议,会议期。作个不太恰当的比喻吧 (虽然不恰当,但意义却是一样的),session是你和网站之间的感情。 session在WEB技术中占有非常重要的份量。由于网页是一种无状态的连接程序,因此你无法得知用户的浏览状态。因此我们必须 通过session记录用户的...
标签: Web开发
写过稍微大型一点 ASP 的人都知道,Session 这个对象真是好用,它可以用来记录使用者私有的资料变量,既安全又方便。但是你真的知道 Session 的运作原理吗?或许了解以后,你就再也不太敢使用这个令人又爱又恨的对象。虽然转而替代之的方法稍嫌麻烦,但在长期考量之下,也就不得不这么做了。 首先来讲讲 Session 的好处,它可以用来记...
session通常放在/tmp目录下,而该文件夹的权限是everbody可读,这个就非常可怕了!学校的论坛曾经就有人通过session来盗取帐号!所以后来就尝试把session放入数据库,表的结构和过程如下: //创建表 //create sesslib.sql CREATE TABLE sesslib ( data text, time datetime, id int(11) DEFAULT ''0'' NOT NULL auto_increm...
标签: PHP
  files: common/Common.config.php include/session.inc.php session_test.php get_session_test.php get_session_test2.php Common.config.php    <?php /* * Common config * By 恋太后天 */ /* * Database config */ define( "DBTYPE", "mysql" ); $database = array (     "mysql" = array  ...
标签: PHP
抛开cookie使用session PHP中SESSION不能跨页传递问题的解决办法   在PHP中使用过SESSION的朋友可能会碰到这么一个问题,SESSION变量不能跨页传递。这令我苦恼了好些日子,最终通过查资料思考并解决了这个问题。我认为,出现这个问题的原因有以下几点: 1、客户端禁用了cookie 2、浏览器出现问题,暂时无法存取cookie 3...

经验教程

847

收藏

18
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部