会员取回密码次数限制
0则表示无限制,若取回问答错误次数超过设定值,则停止至24小时后才能再次使用取回密码功能。小弟求实现的方法,数据库或程序上设计实现都行

解决方案 »

  1.   

    bomb_boy(梦之星) 說得不錯,對於某字段為零的用戶,則不受此限制;
      

  2.   

    to: bomb_boy(梦之星)
    我说得不够清楚,0是表示整个开关的作用,所有用户都不受限制,不用理这个0了你说的这个方法,过了很久以后,表的记录会不会很多呀,
    过了24小时以后,以前的记录就没有用了呀,
      

  3.   

    建立一个数据表,每用户一条记录
    字段及说明如下:
    字段名       字段值       说明
    开关          0/1         记录是否限制取回密码
    错误次数      自然数      记录取回密码输入停息错误次数
    错误开始时间  时间类型    当第一次输入信息错误的时间记录当前系统时间,当输入正确信息时清
                              除记录,错误次数也清0
    最后错误时间  时间类型    当输入错误时记录当前系统时间
    用户ID                    这个就不用说了程序中判断取回密码输入信息:
    1.如果最后错误时间比当前时间早24小时,清除错误次数和两个错误时间,进行第3步,else第2步;
    2.判断 错误开始时间 和 最后错误时间 间的差值,如果在24小时之内,判断 错误次数 是否达到限制,如果达到限制就将错误开始时间和最后错误时间都没为当前时间,错误次数不变,return; esle第3步。 错误开始时间 和 最后错误时间 间的差值大于24小时的判断错误次数,如果没达到限制,第3步
    3.判断输入信息的正确性,如果不正确则 错误次数 加1, 最后错误时间 设为当前时间,如果错误开始时间为空或为默认值,则错误开始时间也设为当前时间。
    4.反馈给用户必要的信息
      

  4.   

    没做过,考虑。。
    数据库加入:取密码次数nums默认为0;取密码日期date1,初始值为注册时间-1天;是否可去密码IsOk,默认为0(表示可以)-------------------------------
    aa = "判断密码" 失败返回1,成功返回0
    bb = 当前日期-取密码日期,若>24返回0,否则返回1
    if (bb==0) //若超过一天了则可以取密码
    {
    IsOk = 0;
    }if (bb==0)
    {
    if(IsOk==0)
    {
    if (nums<10)
    {
    if(aa==0)
    {
    //成功
    nums =0;
    data1 = 当前日期;
    IsOk = 0;
    }
    else
    {
    nums++;
    }
    }
    else
    {
    //超过次数报错。
    nums=0;
    data1 = 当前日期;
    IsOk = 1;
    } }
    else
    {
    //超过次数报错。
    nums=0;
    data1 = 当前日期;
    IsOk = 1;
    }
    }
    else
    { //超过次数报错。
    nums=0;
    data1 = 当前日期;
    IsOk = 1;
    }
    ---------------------------------------总感觉这个法子好麻烦。