如何同时限制同一个用户名
我的做法是用户有一个活跃的时间间隔问题,超出这个活动时间间隔,可以考虑离线,后者可以登陆。如果没有人登陆,这并不意味着前者需要重新登陆,因为他的会话仍然存在,只能是时间越小越准确,也不能是绝对的。此代码已张贴在业主处以供参考。
checkonline()函数
昏暗的IP,rsprv,SQL,prvdbstate
prvdbstate = false
如果dbstate = FALSE然后
DbOpen()
prvdbstate =真
最后如果
集rsprv = server.createobject(ADODB。记录集)
如果会话(用户名),则
SQL =SELECT * FROM {网上},SessionID =会议。这
rsprv。打开SQL,Conn,1,3
如果rsprv EOF之后。
rsprv.addnew
RsPrv(这)= session.sessionid
RsPrv(groupchargelv )= 1
RsPrv(lastacttime )=现在()
RsPrv(userip )= getip
RsPrv(onlinetime )= 0
RsPrv(userwhere )= request.servervariables(http_referer )
其他的
RsPrv(userwhere )= request.servervariables(http_referer )
RsPrv(onlinetime )= rsprv(onlinetime )+ DateDiff(n
RsPrv(lastacttime )=现在()
最后如果
rsprv更新。
rsprv密切()。
response.writenotlogin
其他的
response.write登录
从}中选择*
rsprv。打开SQL,Conn,1,3
如果rsprv EOF之后。
rsprv.addnew
RsPrv(这)= session.sessionid
RsPrv(用户名)=会话(用户名)
RsPrv(groupchargelv )=会议(groupchargelv )
RsPrv(lastacttime )=现在()
RsPrv(onlinetime )= 0
RsPrv(userip )= getip
RsPrv(userwhere )= request.servervariables(http_referer )
其他的
如果rsprv(这)session.sessionid应用(loginset )(1)= false
infotologinout.asp
响应(完)
最后如果
RsPrv(userwhere )= request.servervariables(http_referer )
RsPrv(onlinetime )= rsprv(onlinetime )+ DateDiff(n
RsPrv(lastacttime )=现在()
最后如果
rsprv更新。
rsprv密切()。
最后如果
集rsprv =没有
如果DateDiff(S
应用程序锁定()
应用(onlinelastdelete )=现在
Application.UnLock()
conn.execute(删除网上},{ DateDiff(',lastacttime,现在())>int(应用程序(checkonlinediff )))
最后如果
如果prvdbstate =真正的DbClose()
端功能