如何在执行另一个查询后 x 分钟执行 SQL 查询?
How to perform an SQL query x minutes after another one is executed?
如何让我输入数据库的信息在输入数据 5 分钟后自行更新?
说我有一个 table:
+--+--+-----+
|id|ip|count|
+--+--+-----+
| 1|..|3 |
+--+--+-----+
当计数大于 1 时,我想等待 5 分钟,然后再将其更改回 1。
我想要这个是因为我想在用户输入密码错误 3 次或更多次时设置 'timeout'!
所以当用户输入错误密码时,我写了这段代码:
$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."')");
}
这就创建了上面的 table,但是解决我的问题的最佳方法是什么?会是通过使用 cron 吗?或者可能是 MySQL 预定事件?
不要使用 1 或 0 来阻止,而是使用时间戳。当用户尝试登录时,检查当前时间并将其与数据库中的时间戳进行比较
不要手动重置计数,而是在您的 table 中添加一个时间戳列,指示上次尝试的时间。
当检测到无效尝试时,将当前时间与记录时间进行比较:
如果超过 5 分钟重置计数。
如果小于 5 分钟,如果低于阈值则增加计数,如果超过阈值则阻止尝试。
如何让我输入数据库的信息在输入数据 5 分钟后自行更新?
说我有一个 table:
+--+--+-----+
|id|ip|count|
+--+--+-----+
| 1|..|3 |
+--+--+-----+
当计数大于 1 时,我想等待 5 分钟,然后再将其更改回 1。
我想要这个是因为我想在用户输入密码错误 3 次或更多次时设置 'timeout'!
所以当用户输入错误密码时,我写了这段代码:
$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."')");
}
这就创建了上面的 table,但是解决我的问题的最佳方法是什么?会是通过使用 cron 吗?或者可能是 MySQL 预定事件?
不要使用 1 或 0 来阻止,而是使用时间戳。当用户尝试登录时,检查当前时间并将其与数据库中的时间戳进行比较
不要手动重置计数,而是在您的 table 中添加一个时间戳列,指示上次尝试的时间。
当检测到无效尝试时,将当前时间与记录时间进行比较: