关于session与application的疑问

wwx5240 2004-07-25 06:36:40
问题是这样的,我想用application存放站点的当前在线者(不只是人数,还要具体到哪个用户在线,比如我用session("usre_name")表示用户名,
然后在global.ass上写上
Sub application_onstart
application("user_now")=""
end sub

Sub session_onstart
application.lock
application("user_now")=application("user_now")+session("usre_name")
'--------我在用户登录成功时把用户名赋给session("usre_name"),
application.unlock
end sub
可我发现application("user_now")一直是空的。有劳这里的各位高手告诉我是什么原因以及如何解决。
...全文
230 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
FBugFramework 2004-07-28
  • 打赏
  • 举报
回复
呵呵.

不用谢.多给我一些分就是了。 ^O^

结帖在帖子的管理里面。
wwx5240 2004-07-28
  • 打赏
  • 举报
回复
给了!
FBugFramework 2004-07-27
  • 打赏
  • 举报
回复
sub session_onend
...
end Sub

给一个简单点的方法:
sub session_onend
Replace( application("user_now"),session("User_Name"),"")
Replace( application("user_now"),",,",",")
end Sub
FBugFramework 2004-07-27
  • 打赏
  • 举报
回复
To: wwx5240
application("user_now")=application("user_now")+","+User_Name '在线
=======================
这个application("user_now")要在 LoginSuccess.asp上写的。否则。
做n次'&'操作后的结果要么是 "" 要么是 "Init_ValueInit_ValueInit_ValueInit_Value..."
( Init_Value为session("User_Name")的初始值. )
这点能理解么 ?
wwx5240 2004-07-27
  • 打赏
  • 举报
回复
谢谢!你的sub session_onend这个方案太酷了,比我上面的那个简洁多了,高手。
我是这里的新手,对于你的帮助我知道我不只要道声谢!!
这里好像是可以给分的,但我不知怎么给你分。您可以告诉怎么给你分吗?
智能大石头 2004-07-26
  • 打赏
  • 举报
回复
Sub application_onstart
application("user_now")=""
end sub

Sub session_onstart
application.lock
application("user_now")=application("user_now")&session("usre_name")
'--------我在用户登录成功时把用户名赋给session("usre_name"),
application.unlock
end sub

注意连接符
wwx5240 2004-07-26
  • 打赏
  • 举报
回复
现在又有新的问题,听说一般的网页空间都不允许自己做global文件,如果这样的话怎么在不用session_onstart和session_onend的情况下记录在线用户呢?
多谢各位了!!!
我想大概得做一张临时表,但想不到怎么在用户下线或是或超时(即session.abandon启动)时把该用户的登录记录在这张临时表里删除,有劳各位了,谢!!
wwx5240 2004-07-26
  • 打赏
  • 举报
回复
不过你的“给你一个方法:”看起来还是解决问题的方法,正在试。
多谢了!!感激不尽。!!
wwx5240 2004-07-26
  • 打赏
  • 举报
回复
to : FBug(花知)
其实我是简化的代码:事实上global我是这样写的:
Sub application_onstart
application("user_now")=""
end sub

sub session_onstart
session.timeout=20 'session变量的过期时间为20分钟
User_Name=session("User_Name")
application.lock
if application("user_now")<>"" then
application("user_now")=application("user_now")+","+User_Name '在线用户字符串
else
application("user_now")=session("User_Name")
end if
application.unlock
end sub

sub session_onend
dim tem_user_now
application.lock
tem_user_now=split(application("user_now"),",")
for i=0 to ubound(tem_user_now)-1
if tem_user_now(i)=session("User_Name") then
tem_user_now(i)="it_is_delstr"
end if
next
application("user_now")=""
for i=0 to ubound(tem_user_now)-1
if tem_user_now(i)<>"it_is_delstr" then
if application("user_now")<>"" then
application("user_now")=application("user_now") + "," + tem_user_now(i)
else
application("user_now")=tem_user_now(i)
end if
end if
next
application.unlock
end sub
FBugFramework 2004-07-26
  • 打赏
  • 举报
回复
现在又有新的问题,听说一般的网页空间都不允许自己做global文件,如果这样的话怎么在不用session_onstart和session_onend的情况下记录在线用户呢?
多谢各位了!!!
我想大概得做一张临时表,但想不到怎么在用户下线或是或超时(即session.abandon启动)时把该用户的登录记录在这张临时表里删除,有劳各位了,谢!!
====================================================

给你一个方法:
在线表(onLine)需要一个字段(LastRequest)

写一个Global.asp整个web站点的文件都包含它.

If App("RefTime")&"" = "" Then App("RefTime") = Now()
If App("RefTime") > (Now() - n小时) Then
App("RefTime") = Now()
conn.Execute "DELECT FROM onLine WHERE LastRequest > (Now() - n小时)"
End If
FBugFramework 2004-07-26
  • 打赏
  • 举报
回复
To : wwx5240(本初子午线)

Sub s_onstart
app.lock
app("user_now")=app("user_now")&ses("usre_name")
app.unlock
end sub

你想想看。用户刚连接上时 ses("usre_name") 是不是为 "" ?????
呵呵...ses("usre_name")还没有初始化呀。
还有.假如先初始化ses(..) = "uName"
那么.到后来.app("...") 的结果也应该是 uNameuNameuNameuNameuName....呀。

哈哈。.这个ye要在用户成功登录、获取user_name后在做 & 操作呀。!!
(写的不规范.ses = session)
jkjt 2004-07-26
  • 打赏
  • 举报
回复
在临时表里记录一下用户最后一次读取文件的时间(如果你全用asp),如果发现超过一定时间就认为他不在线。
wwx5240 2004-07-26
  • 打赏
  • 举报
回复
如何在临时表里删除一个已经退出站点(关闭浏览器或超时)的用户的记录呢?比如临时表的用户名为load_usre,那么我删除的条件是什么呢?我想这样:where load_user="???",
"???"是要被删除的记录所对应的用户名,但用户的session已经被abandon了,这个"???"又如何取得呢?
矛盾,不知所措!各们高手!!!谢谢 !
wwx5240 2004-07-26
  • 打赏
  • 举报
回复
好应写在哪里如何写?
关临时表的问题还是个疑问!!??
kingman888 2004-07-26
  • 打赏
  • 举报
回复
Sub application_onstart
application("user_now")=""
end sub

当用户登录成功时
session("usre_name")=用户的名
application("user_now")=application("user_now")&session("usre_name")

这两句不要写在session_onstart里
wwx5240 2004-07-25
  • 打赏
  • 举报
回复
但是怎么可以每一个用户登录都初始化application("user_now")呢,用户上线只能使application("user_now")在原有的基础上再增加一个session("usre_name")才对啊!application("user_now")应该只能初始一次才对啊?
还有更大的问题是我的session("usre_name")不能赋到application("user_now")。
因为我读application("user_now")时始终是空的,即使我初始化时改成application("user_now")="abc"(测试application能不能写出),那也总是只写出"abc",也就是application可以写出但session("user_name")传不到application。
我并不清楚session_onstart、session_onend触发的时机。书上说:每“产生”/“结束”一个session对象都将分别激活这两个事件的代码。假如我的站点要创建多个session怎么办?
问题!!急,请各位多多指教!!
huidan 2004-07-25
  • 打赏
  • 举报
回复
application("user_now")=""
这个要写在 Sub session_onstart中
因为 Sub application_onstart只在程序初始化时执行一次
而session_onstart才是在每个人登陆时都执行一次

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧