怎样判断用户是否登录系统?

wy796143l 2009-12-30 09:57:53
类似OA里面的功能,显示出在线用户的列表,还可以累计在线时长。
本来想的是在数据库里加一个字段,但要处理很多异常情况,太麻烦了。
有人说用Session,获取登录的用户名,每隔一段时间更改时间,用户掉线或者退出就更改不了,然后判断当前时间大于用户那个时间的就是不在线的用户。但不是每个用户的时间都是准确的,和服务器时间也不一定对应,而且,对于刚退出系统还没刷新时间的用户,系统还是认为用户在线。

有没有什么好点的方法啊?我们用的这个OA就挺不错的。不知道是怎么实现的?
...全文
319 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
wy796143l 2009-12-30
[Quote=引用 4 楼 a6711145 的回复:]
引用 3 楼 a6711145 的回复:
一个方法你可以试一试:
table tt

id    starttime    endtime

服务端 弄一个 a.asp 请求页面  根据客户请求过来的 用户Id 来记录用户是否在线。

客户端页面: 客户登录 写一条记录 x 到 服务端记录开始时间 starttime  ,而后写一个1秒 或 3 秒 的 定时器 请求 a.asp 页面 跟新 记录x 的 endtime 时间 ,用户掉线什么的就不会请求 a.asp 页面,所以
endtime 就是用户掉线前的时间。
用户在线时间就是 他们的差。 用户每次登录
都会记录一个新 登录记录。 所以这样记时 会准确点



这样客户多了 服务器 会不会 爆掉啊?
[/Quote]

用户一多的话应该会很卡的吧
回复
shanshuang0924 2009-12-30
学习了。
回复
a6711145 2009-12-30
[Quote=引用 3 楼 a6711145 的回复:]
一个方法你可以试一试:
table tt

id    starttime    endtime

服务端 弄一个 a.asp 请求页面  根据客户请求过来的 用户Id 来记录用户是否在线。

客户端页面: 客户登录 写一条记录 x 到 服务端记录开始时间 starttime  ,而后写一个1秒 或 3 秒 的 定时器 请求 a.asp 页面 跟新 记录x 的 endtime 时间 ,用户掉线什么的就不会请求 a.asp 页面,所以
endtime 就是用户掉线前的时间。
用户在线时间就是 他们的差。 用户每次登录
都会记录一个新 登录记录。 所以这样记时 会准确点

[/Quote]

这样客户多了 服务器 会不会 爆掉啊?
回复
a6711145 2009-12-30
一个方法你可以试一试:
table tt

id starttime endtime

服务端 弄一个 a.asp 请求页面 根据客户请求过来的 用户Id 来记录用户是否在线。

客户端页面: 客户登录 写一条记录 x 到 服务端记录开始时间 starttime ,而后写一个1秒 或 3 秒 的 定时器 请求 a.asp 页面 跟新 记录x 的 endtime 时间 ,用户掉线什么的就不会请求 a.asp 页面,所以
endtime 就是用户掉线前的时间。
用户在线时间就是 他们的差。 用户每次登录
都会记录一个新 登录记录。 所以这样记时 会准确点
回复
wy796143l 2009-12-30
[Quote=引用 1 楼 kensouterry 的回复:]
定时  刷新
[/Quote]
这样就和我说的第二条一样了。这种方法很好用么?
真的好用的话能不能说详细一点?
回复
kensouterry 2009-12-30
定时 刷新
回复
wuyq11 2009-12-30
记录用户操作时间,如果与当前时间差超过规定时间,用户下线
回复
gwins 2009-12-30
关注
回复
发帖
C#
创建于2007-09-28

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2009-12-30 09:57
社区公告

让您成为最强悍的C#开发者