php - 如何在执行另一个 SQL 查询 x 分钟后执行一个 SQL 查询?

标签 php database mysqli

如何让我输入数据库的信息在输入数据 5 分钟后自行更新?

假设我有一张 table :

   +--+--+-----+
   |id|ip|count|
   +--+--+-----+
   | 1|..|3    |
   +--+--+-----+

当计数大于1时我想等5分钟再改回1。

我想要这个是因为我想在用户输入密码错误 3 次或更多次时设置“超时”!

所以当用户输入错误密码时,我编写了这段代码:

$currentIP = $_SERVER['REMOTE_ADDR'];
$ipcheck = mysqli_query($con,"SELECT *
FROM ipcheck");
while($row = mysqli_fetch_array($ipcheck))
{
    if($currentIP == $row['ip']){
        if($row['count'] > 2){
            //attempted to log in too many times!
            header("Location: secure?err=2");
            exit;
        }else{
            $IPUsed = "YES";
        }
    }
}
if($IPUsed == "YES"){
    //They have failed to log in AGAIN!
    $updateIP = mysqli_query($con,"UPDATE ipcheck 
    SET count = count + 1
    WHERE ip = '".$currentIP."'");
}else{
    //first failed login attempt
    $insertNewIp = mysqli_query($con,"INSERT INTO ipcheck (ip)
    VALUES ('".$currentIP."')");
}

这就创建了上面的表格,但是解决我的问题的最佳方法是什么?会是通过使用 cron 吗?或者也许是 MySQL 预定事件?

最佳答案

不要使用 1 或 0 来阻止,而是使用时间戳。当用户尝试登录时,检查当前时间并将其与数据库中的时间戳进行比较

关于php - 如何在执行另一个 SQL 查询 x 分钟后执行一个 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28236108/

相关文章:

php - 任何无需 mail() 即可发送电子邮件的 php 函数

php - 使用 vagrant 环境时无法连接 Websocket

c# - 为用户分配角色

database - 根据拆分字符选择postgres中文本字段的最后n行

php - 执行多个查询然后输出为数组

php - 多个 PHP mysqli 准备好的语句(INSERT UPDATE SELECT)奇怪的行为

php - 从数据库中选择随机三份(或更多)

javascript - jQuery 序列化所选选项的值,而不是标签

php - 如何调试与 WordPress 建立数据库连接的错误

mysql - 在 SQL 表中查询