【问题标题】:mySQL Database - Reset certain column to '0' every 15 minutesmySQL 数据库 - 每 15 分钟将某些列重置为“0”
【发布时间】:2016-07-28 08:20:38
【问题描述】:

好的,如果我有一个登录数据库:

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

Attempts 标记每个用户尝试登录的次数。所以用户 1 尝试登录 4 次,用户 2 尝试登录 2 次。

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

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

谢谢!

  • 编辑:从 SQL 触发器方法

【问题讨论】:

  • 为什么是触发器?什么时候应该重置尝试值?
  • 不知道为什么是触发器,只是觉得可能有一种使用触发器的方法。没必要!我想将每行的“尝试”值设置为 0,每 15 分钟一次。

标签: php mysql sql triggers


【解决方案1】:

您可以按照here 的描述使用 EVENT

例如

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

【讨论】:

    【解决方案2】:

    这样做的目的是为了防止暴力攻击吗? 如果是这样,有比您建议的更好的方法。

    这篇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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2022-11-13
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2021-08-23
      • 1970-01-01
      相关资源
      最近更新 更多