注册 登录
编程论坛 ASP技术论坛

如何限制登录次数?

chaojimali 发布于 2006-08-07 09:11, 3887 次点击

比如说用户登录三次不成功,在一个小时之内就不可以再登录 这个用ASP怎么实现
请高手帮忙解决一下吧

22 回复
#2
labid2006-08-07 09:25
具体代码我没有,但是我觉得应该获取IP地址``````
然后判断他是不是三次没成功,在用户数据的数据库表中,加个字段 以记录今天的失败登陆次数目!
再加个记录临时时间的字段~~~~~~~~!
当一个用户当天登陆第一次的时候,自动更新时间字段里的时间数据,用语句实现只更新一次,如果时间字段里的数据与服务器系统时间相同就不更新了~~~~~~!《还有就是如果不是当天时间,还要在数据库中的记录数目的字段把数据刷成0,是当天时间就不刷````````!(因为这个时间不是今天的,就等于记录的昨天的失败登陆次数目)》

然后用户没登陆失败一次,找到自己对应的记录数目的字段,如果不为3,就增加+1!
然后页面判断用户登陆页面的时候,找到他的记录数目的字段,判断是不是为3!如果为3便拒绝,不为3通过验证!(进行密码验证)  “接到前面《》那里````````!”



这只是我的构想,不知道可以实现不,楼主可以参考一下!
#3
labid2006-08-07 09:27
第一行获取IP地址就不要了,没用,那个只针对IP!
我写着写着,想法变了,第一句忘记删了```````````````````汗
#4
chaojimali2006-08-07 09:28
谢谢楼上的 这个我已经想过了 不过这样要反复读写数据库,会不会对系统造成压力啊
#5
labid2006-08-07 09:29
获取名字判断
然后判断他是不是三次没成功,在用户数据的数据库表中,加个字段 以记录今天的失败登陆次数目!
再加个记录临时时间的字段~~~~~~~~!
当一个用户当天登陆第一次的时候,自动更新时间字段里的时间数据,用语句实现只更新一次,如果时间字段里的数据与服务器系统时间相同就不更新了~~~~~~!《还有就是如果不是当天时间,还要在数据库中的记录数目的字段把数据刷成0,是当天时间就不刷````````!(因为这个时间不是今天的,就等于记录的昨天的失败登陆次数目)》
然后用户没登陆失败一次,找到自己对应的记录数目的字段,如果不为3,就增加+1!
然后页面判断用户登陆页面的时候,找到他的记录数目的字段,判断是不是为3!如果为3便拒绝,不为3通过验证!(进行密码验证)  “接到前面《》那里````````!”
#6
labid2006-08-07 09:31
那我确实没有更好的思路了``````嘿嘿,希望其他高手来讲下思路,其实考虑以上验证,全部过程用存储过程来实现,只用调一次SQL语句```````
我也好学习一下!
#7
chaojimali2006-08-07 09:39
哦 我对存储过程还不是很了解 有时间可以指点一下吗 QQ:82427944
谢谢
#8
hangxj2006-08-07 10:09

用户登录不成功就对其进行计数
当计数到3次时就将该用户名记录到一个专门记录该事件的表中,并把时间也一起记录。

当用户再次登录的时候先看该事件表中是否存在该用户,如果不存在就进行一般性的验证,如果存在就与表中的时间进行比较。如果时间相关大于一个小时就进行验证,否则提示用户无法进行登录。

#9
渚薰2006-08-07 13:08
用cookie记录
#10
qqsheji2006-08-07 15:46
用session 很容易判断出来的
#11
hangxj2006-08-07 15:48
想听听楼上这位兄弟的。
#12
qqsheji2006-08-07 15:52
if Session("err")>=3 then
  errorr=1
  errmsg="你已经重试这么多次了,累了吧,请歇会再来,或者联系管理员!"
 else
 sql="select * from admin where adminname='"&adminname&"'"
 Rs.open sql,conn,3,1
 if Rs.eof and Rs.bof then
  errorr=1
  Session("err")=Session("err")+1
  errmsg="用户名不存在,请返回重新填写确认!"
  Rs.close
 else if adminpassword<>Rs("adminpassword") then
  errorr=1
  Session("err")=Session("err")+1
  errmsg="用户名和密码不符,请确认后再输一次!"
  Rs.close
 end if
 end if
#13
qqsheji2006-08-07 15:56
代码基本上就是这样的了 但是没有给出一个小时后登陆的代码
#14
hangxj2006-08-07 15:59
如果用户把浏览器关了呢?
#15
qqsheji2006-08-07 16:04
浏览器关了没事  只要机器不重新启动就可以吧?
#16
pippe2006-08-07 17:12
Session只对浏览器进程吧
用COOKIE,COOKIE存储1个小时,一个小时后释放
原理同12楼
#17
渚薰2006-08-07 17:54
用cookie

IF Request.Cookies("web")("loginErrTimes")="" THEN
Response.Cookies("web")("loginErrTimes")="1"
Response.Cookies("web").Expires=now()+1 '+1表示当前时间后1天,如果是1个小时后就是+1/24
END IF

IF cint(Request.Cookies("web")("loginErrTimes"))>=3 THEN
Error=Error+"<li>尝试登录出错已经达到3次,24小时内无法再登录了</li>"
ELSE
Error=Error+"<li>用户名或密码错误,请仔细核对!</li>"
Error=Error+"<li>您还有"&cstr(3-cint(Request.Cookies("web")("loginErrTimes")))&"次可以尝试的机会</li>"
Response.Cookies("web")("loginErrTimes")=cstr(cint(Request.Cookies("web")("loginErrTimes"))+1)
END IF

[此贴子已经被作者于2006-8-7 17:55:28编辑过]

#18
做人很低调2006-08-09 13:25
回12楼:
用session的方法做一点意义都没有,session只能记录打开页面到关闭页面之内时间的信息
当我输入3次错误信息后 关闭页面 在重新打开页面 还是可以输入错误的信息
这根本就没有起到想要的效果
#19
ymeng2006-08-09 15:10
用cookie记录记录,当这个cookie的数值大于3时限制,1小时后cookie过期作废
#20
周想想2010-06-08 21:47
cookie那么用啊?
#21
周想想2010-06-08 21:50
那么统计在线人数啊?聊天室
#22
周想想2010-06-08 21:51
请问那么的统计在线人数,用application那么用啊?
#23
周想想2010-06-08 21:57
那么在登录的时候用验证码?请教下啊啊
1