如何避免重复登陆的问题?请教高人~~~ 简单说,就是当一个用户登陆后,避免利用该用户名重复登陆.实在是没什么头绪.本来想用session存一个变量,当会话结束时修改数据库中的值,每次登陆时除验证用户名,密码还判断一下该用户在数据库中的值,如果在线就禁止登陆.可是我会话用的是默认时间20分钟,每次关闭页面后要等20分钟才能再登陆.我又不想改变默认的时间.不知道各位高人又什么好办法?谢谢了!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 个人觉得:应该把该用户名和该用户SESSION ID一起保存到数据库中,等会话结束(也就是该用户断开)再删除数据库记录,当然你判断是否有重复登陆只要判断数据库中有没有该用户记录就可以了。 可以在数据库里入手在你数据库的用户信息的表里 加一个字段flag记录改用户是否已登陆在用户登陆时 你都要访问用户的合法性 这是可以将用户登陆记录的flag进行修改 如果有人想利用重复的帐号登陆那么在登陆的时对这个是否登陆的记录字段进行判断就可以了在用用户退出登陆时 再次修改数据库的那个flag不过这样有个缺陷:如果用户是非法退出的时候,那个登陆记录的标记就没有被修改回来,下次那个帐号的用户就没办法登陆。 可以使用Cache实现,退出时记得清除Cache里的记录,否则下次也不进去了参看http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168 你们说了这么多,我也提点意见:用户关闭浏览器服务器是可以捕捉到的,比如:在客户端body里onunload事件里dopostback服务器端的某个按钮事件,在这个按钮时间里 修改需要修改的记录就可以了,我这样已经实现了。我的方法是:在用户登陆时把用户名加入一个arraylist里,这个arraylist存入application变量里。当用户关闭浏览器时从 arraylist里删除这个用户,删除时是根据session["user"]的值删除的,而当session超时时,再也取不到session["user"]的值,也就无法从用户列表arraylist里删除这个用户了,你们说在session超时时可以修改数据库,这是怎么确定删除哪个用户或修改某个用户的flag值??? 可以在用户登录的时候记录用户,然后再记录用户活动的时间,if(登录时间 > 最后活动时间) 用户已经登录;else 可以登录; asp里边 我可以用定时刷新一个窗体 不知道net里边是不是也可以用。 在线就禁止登录不好吧,应该像msn,这边一登,那边就下线。可以去数据库里查一下----------------『 http://www.coderpub.com 』----------------java,j2me,delphi,asp.net,C# 用application 可以解决 当一个用此用户名的 用户登陆时,修改其FLAG为1,下次如果有同样的人登陆时当此FLAG为1时,拒绝登陆 哎——————想好了再说,说好点。TOaiqinbird(爱琴鸟):你说会话结束时删除数据库记录,但是此时你得不到session值,怎么确定删除哪条记录????问题考虑充分再回答,谢谢。 TO:junhao_666() 你说当用户退出时更改数据库中的flag标志,可是我怎么知道用户退出呢?用户点了浏览器右上角的关闭或直接关机了,我怎么知道这个事件呢?请指教!注销用户的方法也困饶了我好长时间了!请高手们指教,最好有例子而且详细些!谢谢! 本人比较赞成用Cache来解决 比较方便速度也比较快 笨办法:登录后每分钟往数据库里更新一下时间记录,再次登录检查该用户的时间,如果时间差小于设定值,则不允许登录。===========基本行不通。假设间隔时间是 一分钟。Session有效时间是 2分钟。我登陆后,记录一个时间。我开始浏览一个网页,浏览两分钟(不会传信息),这是另一个人用相同的帐号登录。由于时间已经超过了一分钟,所以它可以登录。他登陆后,我再访问网页,我的Session并没有超时,所以我仍然可以访问(不用重新登录)。这时就有两个人使用同一个帐号登录了。 是用页面中的定时刷新程序,即使在一个网页不动,只要不超过session,就每隔一分钟往数据库里更新时间记录。 http://zhangweiguo3984.cnblogs.com/archive/2006/01/10/314248.html 实现单点登陆 svg 格式的文件转换为Jpg 求GridView导出到excel,javascript源码? URL重写与模板文件冲突问题 关于.net的cms的问题 .net +sql问题? 对同样的内容怎样处理 TextBox控件如何调用javascript脚本?? 怎样获取DIV的滚动事件,急呀,分不够在加! 我有点乱,请大伙帮忙捋一捋思路 编译器错误信息: BC30451: 名称“DataSet1”未声明。???这是什么问题??? 大家如何完成一个“列表->新增、修改、删除”的操作模式 请教一个关于网络播放器的问题
应该把该用户名和该用户SESSION ID一起保存到数据库中,
等会话结束(也就是该用户断开)再删除数据库记录,
当然你判断是否有重复登陆只要判断数据库中有没有
该用户记录就可以了。
在你数据库的用户信息的表里 加一个字段flag记录改用户是否已登陆
在用户登陆时 你都要访问用户的合法性 这是可以将用户登陆记录的flag进行修改
那么在登陆的时对这个是否登陆的记录字段进行判断就可以了
在用用户退出登陆时 再次修改数据库的那个flag不过这样有个缺陷:
如果用户是非法退出的时候,那个登陆记录的标记
就没有被修改回来,下次那个帐号的用户就没办法登陆。
参看
http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168
用户关闭浏览器服务器是可以捕捉到的,比如:在客户端body里onunload事件里dopostback服务器端的某个按钮事件,在这个按钮时间里 修改需要修改的记录就可以了,我这样已经实现了。
我的方法是:
在用户登陆时把用户名加入一个arraylist里,这个arraylist存入application变量里。当用户关闭浏览器时从 arraylist里删除这个用户,删除时是根据session["user"]的值删除的,而当session超时时,再也取不到session["user"]的值,也就无法从用户列表arraylist里删除这个用户了,你们说在session超时时可以修改数据库,这是怎么确定删除哪个用户或修改某个用户的flag值???
用户已经登录;
else
可以登录;
可以去数据库里查一下----------------
『 http://www.coderpub.com 』
----------------
java,j2me,delphi,asp.net,C#
TOaiqinbird(爱琴鸟):
你说会话结束时删除数据库记录,但是此时你得不到session值,怎么确定删除哪条记录????
问题考虑充分再回答,谢谢。
你说当用户退出时更改数据库中的flag标志,可是我怎么知道用户退出呢?用户点了浏览器右上角的关闭或直接关机了,我怎么知道这个事件呢?请指教!
注销用户的方法也困饶了我好长时间了!请高手们指教,最好有例子而且详细些!谢谢!
笨办法:
登录后每分钟往数据库里更新一下时间记录,再次登录检查该用户的时间,如果时间差小于设定值,则不允许登录。===========基本行不通。假设间隔时间是 一分钟。Session有效时间是 2分钟。我登陆后,记录一个时间。我开始浏览一个网页,浏览两分钟(不会传信息),这是另一个人用相同的帐号登录。由于时间已经超过了一分钟,所以它可以登录。他登陆后,我再访问网页,我的Session并没有超时,所以我仍然可以访问(不用重新登录)。这时就有两个人使用同一个帐号登录了。