<SCRIPT LANGUAGE="VBScript" RUNAT="Server">Sub Application_OnStart ' Set our user count to 0 when we start the server Application("ActiveUsers") = 0 End SubSub Session_OnStart ' Change Session Timeout to 20 minutes (if you need to) Session.Timeout = 20 ' Set a Session Start Time ' This is only important to assure we start a session Session("Start") = Now ' Increase the active visitors count when we start the session Application.Lock Application("ActiveUsers") = Application("ActiveUsers") + 1 Application.UnLock End SubSub Session_OnEnd ' Decrease the active visitors count when the session ends. Application.Lock Application("ActiveUsers") = Application("ActiveUsers") - 1 Application.UnLock End Sub</SCRIPT> 上面是Asp统计在线用户的完备方案,可是当用户关闭浏览器窗口时,它的计数并不会马上减一,而是要等到session_end事件触发,而本身这个事件是建立在用户在规定时间(默认20分钟)内没有请求才触发
' Set our user count to 0 when we start the server
Application("ActiveUsers") = 0
End SubSub Session_OnStart
' Change Session Timeout to 20 minutes (if you need to)
Session.Timeout = 20
' Set a Session Start Time
' This is only important to assure we start a session
Session("Start") = Now
' Increase the active visitors count when we start the session
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") + 1
Application.UnLock
End SubSub Session_OnEnd
' Decrease the active visitors count when the session ends.
Application.Lock
Application("ActiveUsers") = Application("ActiveUsers") - 1
Application.UnLock
End Sub</SCRIPT>
上面是Asp统计在线用户的完备方案,可是当用户关闭浏览器窗口时,它的计数并不会马上减一,而是要等到session_end事件触发,而本身这个事件是建立在用户在规定时间(默认20分钟)内没有请求才触发
在php.ini中
session.cookie_lifetime = 0
这里设置为0,关闭浏览器的话session就马上清除了对于楼主的要求,可以用window.onunload事件来达到,当关闭浏览器的时候触发onunload事件,这时候可以打开一个小窗口来更改他在数据库的状态,并注销当前的session,更改完后自动关闭这个小窗口
<script>
window.onunload=function(){
open('exit.php','','width=1,height=1,status=0,menubar=0,toolbar=0,scrollbars=no');
//在exit.php里面处理
}
</script>
建议你这样:
一个用户近来的时候 你当然是向数据库写他的状态了
不过你还可以这样 检测以下数据库里面最后刷新时间和现在的时间比较是不是超过了一定时间
超过了 就kick
session.cookie_lifetime = 0
的理解是直到浏览器被关闭,这个session才会失效
而
session.cookie_lifetime = 120
意味着即使浏览器未被关闭而客户端20分钟内未有新请求这个session自然失效