mySQL数据库-将某一列重置为';0';每15分钟


mySQL Database - Reset certain column to '0' every 15 minutes

好吧,如果我有登录数据库:

id | email | pass | attempts
----------------------------
 1 |  ""   |  ""  |    4
 2 |  ""   |  ""  |    2

尝试次数标记每个用户在登录时进行的尝试次数。因此,用户1尝试登录4次,用户2尝试登录2次。

我想知道是否有一种方法*可以添加到我的登录数据库中,它会将所有用户尝试重置为0?因此,重置后,表格将如下所示:

id | email | pass | attempts
----------------------------
 1 |  ""   |  ""  |    0
 2 |  ""   |  ""  |    0

谢谢!

  • 编辑:从SQL触发器方法

您可以使用这里描述的EVENT

例如

CREATE EVENT clear_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 15 MINUTE
DO
  UPDATE myschema.the_table SET attempts = 0;

这样做的目的是防止暴力攻击吗?如果是这样的话,还有比你提议的更好的方法。

StackOverflow的这篇帖子提供了很多关于如何阻止它的信息,并提到你可以问一个"简单"的问题,以确保用户不是机器人。

然而,如果你不想要这样的东西,并且你更倾向于记录某人输入错误详细信息的次数,那么在你的PHP登录脚本中,你可以复制如下内容。

if($UserInput == $Password){
//let the user in, they're correct
}
else{
//Relay Incorrect password text
    if($i > 4) //So 5 tries at an incorrect password
    {
        //Disable the button for x unix time
    }
    else
    {
        $i++; //Add one to the count
    }
}