首页 新闻 会员 周边

在C#,中如何处理用户每天只能有三次机会取回密码的问题

0
悬赏园豆:50 [已解决问题] 解决于 2010-08-09 08:30

如果,用户,输入的邮箱和身份证号,有三次是在自己的信息里不存在的

就让他今天不能取回密码。

 

 

 

 

紫炁星的主页 紫炁星 | 初学一级 | 园豆:57
提问于:2010-08-07 15:21
< >
分享
最佳答案
0

保险的话,可以做一个取回密码记录表,每取一次做一下记录,每取时也要按照时间查询一下当天是否超过三次,加上本次。然后做出反应,这样也相当于有个日志表,方便以后查看该用户每次取回密码时的详细时间和IP等。

还有一种就是给用户表加两字段,一个记录最后取回密码的时间,一个记录次数,当今天第一次取回密码的时候,判断时间字段是否是今天,如果不是则当前是第一次,则清空记录次数的字段,并加1,并更新时间字段。就这样,当然当天时间超过三次的时候就返回错误了。

建议采用第一种方法。

收获园豆:30
Astar | 高人七级 |园豆:40805 | 2010-08-07 15:54
1楼的第一种和2楼的第2种,基本一致! 非常感谢2位,给我提出一个解决问题的思路。
紫炁星 | 园豆:57 (初学一级) | 2010-08-09 08:40
其他回答(2)
0

有2种方法:

1、建立一个cookies,用于保存获取次数并同时记录日期,如果日期为当天同时超过3次就不允许其取回密码,这个是最常用的方法而且是比较简单、消耗资源比较少的,许多网站都是这种做法。但是只要客户一旦清空了cookies就无效了,不太安全

2、在数据库中建立张表,字段:用户名、取回密码次数、取回密码时间,每次用户取回密码先在这张表中检查下今天这个用户有没取回过密码,如果没有取回过则新增一条记录,记录用户名、取回次数为1,取回时间,如果已经取回过则更新这个字段的取回次数+1和取回时间,满3次则不允许取回。这种方法比较烦,但是比较安全。

注意:这种方法在取回时需要将这个用户今天以前取回密码的记录删除掉,否则这张表记录会非常多

收获园豆:20
kyo-yo | 园豆:5587 (大侠五级) | 2010-08-07 15:55
0

最简单的方式 用Cache来存 如果担心压力就放在memcache上

dotNET界面-大白 | 园豆:234 (菜鸟二级) | 2012-10-19 10:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册