ASP离线用户搞得我头晕

来源:百度知道 编辑:UC知道 时间:2024/07/04 14:13:18
在GLOBAL.ASA里 Sub Session_OnEnd 用这个东西搞。先问可以在GLOBAL.ASA链接到数据为吗?可以执行数据为的修改吗?意思是当用户关闭浏览器时或当SESSION清空时。时LOGIN表的在线情况修改成“0”0代表不在线。这段代码:<script language="vbscript" runat="server">
Sub Session_OnEnd

dim conn
Set conn = Server.CreateObject ("ADODB.Connection")
conn.Open "DRIVER={SQL Server};SERVER=.;UID=sa;PWD=sa;Database=aaa"

set rs2 = server.CreateObject("adodb.recordset")
sql2 = "select * from login where 用户名 = '"&session("user")&"'
rs2.open sql2,conn,1,3
if not rs2.eof then
rs(2) = '0'
end if
rs2.update
rs2.close
set rs2 = nothing
conn.close
set conn = nothing

End Sub
</script>从查询语句那就报错。求代码。求代码。求代码。要代码。还有一个问题。就是用这个Session_OnEnd。如果他刚打开就关闭。默认的session时间是20分钟。那就这个会在20分钟后才执行这个VBSCRIP 是的吗?

查询语句出错:
sql2 = "select * from login where 用户名 = '"&session("user")&"'
这是基本的字符连接,你看一下是不是最后省一下双引号?
看样子你很少写程序,或者是没有开发过这样的东西的经验.

如果一打开就关闭,session时间是20分钟,的确是会出现你的那种情况.但如果你要求的精确,这个时间是可以设置的.

就算是你改动了正确的sql语句,你的程序也是错误的.我刚才告诉过一个人让他在session_onEND中做.不知道是不是你?

试问一下,如果对方没有登陆时,是不存在session("user")的,这不费话吗?关键是你的程序会取一个空值而进行更改.这样,我想,不会正确吧?

真正的我们还要判断其是否登陆过!如果一打开网页,当然就已经生成了session_onstart事件,可是他没有登陆,而是关闭了网页,20分钟后执行了您的session_onEND,这时你再看一下你的情况!

Sub Session_OnEnd
if session("user") <> "" then
dim conn
Set conn = Server.CreateObject ("ADODB.Connection")
conn.Open "DRIVER={SQL Server};SERVER=.;UID=sa;PWD=sa;Database=aaa"

set rs2 = server.CreateObject("adodb.recordset")
sql2 = "select * from login where 用户名 = '"&session("user")&"'"
rs2.open sql2,conn,1,3