新手提问:Session问题!急,在线等!!!!

sharing 2005-07-12 04:54:11
我做一个通行证的功能.
是asp+sql server的
我sql server数据库a里有一张表:hy_login 是专门记录会员登录情况的(是否登录,登录时间,登录次数,退出时间.)
login字段是"是否登录"字段:1表示登录.0表示退出.
我的global.asa,写法如下.
<script language=vbscript runat=server>
sub session_onstart
Session.Timeout = 5
end sub

sub session_OnEnd
username=CInt(session("username"))

set conn = server.CreateObject("adodb.connection")
ConnTemp = "driver={SQL Server};server=.;uid=51vac;pwd=51vac;database=51vac"
conn.open ConnTemp
dim a
a="0"
sql_online = "update hy_login set login='"& a &"',outtime='"& now() &"' where username='" & username & "'"
conn.Execute sql_online
Set conn = nothing
end sub
</script>

session超时后,直接让数据库的hy_login表的login字段归零.

我的测试文件为:test.asp,内容如下:
<%
username=session("username")
response.write "session username="&username

session.abandon()
%>
直接执行后,能够直接让数据库的hy_login表的login字段归零.

可是非法退出,关闭窗口以后,session超时后,login字段还是不能从1归为零.

请问这是为什么.
望各位高手不吝赐教.
我很急呀

另外:我还想问一下Session.Timeout = 5一般是放在global.asa里呢.


...全文
216 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sonymanzzzzzz 2005-07-15
  • 打赏
  • 举报
回复
高手 ~
sharing 2005-07-13
  • 打赏
  • 举报
回复
孟子E章 2005-07-13
  • 打赏
  • 举报
回复
<Script LANGUAGE = VBScript RUNAT = Server>
Sub Application_OnStart
'清空LoginUser表
End Sub
tigerwen01 2005-07-13
  • 打赏
  • 举报
回复
关闭窗口触发的是Sub Application_onEnd

孟子E章 2005-07-13
  • 打赏
  • 举报
回复
你可以用SessionID记录。当然插入数据可以在登录的时候

<Script LANGUAGE = VBScript RUNAT = Server>
Sub Session_OnStart
'清空LoginUser表
End Sub

Sub Session_OnStart
Response.Expires = -100
Server.ScriptTimeout = 10
Session.Timeout = 1
SET sqlConn = SERVER.CREATEOBJECT("ADODB.Connection")
sqlConn.Open "Provider=sqloledb;Data Source=.;Initial Catalog=phedu;User Id=sa;Password=;"

sSQL = "Insert LoginUser (SessionID) Values(" & Session.SessionID & ")"
SQLConn.Execute(sSQL)
sqlConn.Close
Set sqlConn = Nothing
End Sub

Sub Session_OnEnd
SET sqlConn = SERVER.CREATEOBJECT("ADODB.Connection")
sqlConn.Open "Provider=sqloledb;Data Source=.;Initial Catalog=phedu;User Id=sa;Password=;"

sSQL = "DELETE From LoginUser WHERE SessionID = " & Session.SessionID SQLConn.Execute(sSQL)
sqlConn.Close
Set sqlConn = Nothing
End Sub
</Script>
chenguang79 2005-07-13
  • 打赏
  • 举报
回复
你在调用session("username")时,好相错了,我也是这么作的,好用
username=session.Contents("username")这样才行
sharing 2005-07-13
  • 打赏
  • 举报
回复
感谢dragon18的回答:
但是,在onend事件中session的值是存在的呀.abandon就是触发那一事件的方法

顶.
dragon18 2005-07-12
  • 打赏
  • 举报
回复
问题是session超时后,session("username")数据已经不存在了,你在执行
sql_online = "update hy_login set login='"& a &"',outtime='"& now() &"' where username='" & username & "'"
时,username已经为空了,肯定不行了,我是这样理解的,不知道正不正确
shine2000 2005-07-12
  • 打赏
  • 举报
回复
寫個判斷,滿足條件時就用update 把login字段的值修改過來

28,406

社区成员

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

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