用数据库怎么样?思路是这样的,表结构(onlineUser)如下: --------------------------- sessionid | newLoginTime| --------------------------当页面被加载时,首先 delete from onlineUser where (newLoginTime和当前时间相差大于指定时]间)。然后用用户的sessionid到数据库中查,查到执行update onlineUser set newLoginime=(Now) where sessionid=(sessionid),否则查入一条新的记录。然后select count(*) from onlineUser得到新的再线数目。缺点是,每加载一次页面,就要执行三条SQL语句(当然可以考虑三条语句同时一次执行),对数据库还是有一定的压力。
to honghe1(和良) 你的这个思路和我想的上面是致的,但这样当所有浏览器关了sessionid值又换了,如果用户在我设定的时间内(比如5分钟)再登陆一次网站的话那么在线统计将会把此人 统计成二人在线 ,明显会使统计人数增多,所以也不是很好的解决方法统计成二人在线,所以还不是唯一的方法
看来用sessionid也不能唯一确定一个人,那还有其他什么方法可以唯一确定一个人呢.这样好吗,我们用Cookies.第一次来的兄弟没,查Request.Cookies("sessionid")<>"" ? if Request.Cookies("sessionid")="" then '我们的策略认为是新来的朋友
怎么得到?是唯一的吗?
是不是一但关掉浏览器后sessionid值又换了?
---------------------------
sessionid | newLoginTime|
--------------------------当页面被加载时,首先 delete from onlineUser where (newLoginTime和当前时间相差大于指定时]间)。然后用用户的sessionid到数据库中查,查到执行update onlineUser set newLoginime=(Now) where sessionid=(sessionid),否则查入一条新的记录。然后select count(*) from onlineUser得到新的再线数目。缺点是,每加载一次页面,就要执行三条SQL语句(当然可以考虑三条语句同时一次执行),对数据库还是有一定的压力。
你的这个思路和我想的上面是致的,但这样当所有浏览器关了sessionid值又换了,如果用户在我设定的时间内(比如5分钟)再登陆一次网站的话那么在线统计将会把此人 统计成二人在线 ,明显会使统计人数增多,所以也不是很好的解决方法统计成二人在线,所以还不是唯一的方法
sessionid=Session.SessionID
response.Cookies("sessionID")=sessionid
response.Cookies("sessionID").Expires=Now + 1
'一天后为空,不过具体可以用dateAdd()来得到5分钟过期时间,5分钟后这个Cookies为空
response.Cookies("sessionID").Domain="www.yourWebSiteName.com"
response.Cookies("sessionID").path="/" '这里加入上面的数据库插入操作else
'认为在线,更新Cookies的生存期,这里重复上面的Cookies操作就是了 '加入上面的数据库更新在线时间操作,刷掉过期用户操作
end if