Php 如何在执行另一个SQL查询x分钟后执行SQL查询?
在输入数据5分钟后,如何使我放入数据库的信息自我更新 假设我有一张桌子:Php 如何在执行另一个SQL查询x分钟后执行SQL查询?,php,database,mysqli,Php,Database,Mysqli,在输入数据5分钟后,如何使我放入数据库的信息自我更新 假设我有一张桌子: +--+--+-----+ |id|ip|count| +--+--+-----+ | 1|..|3 | +--+--+-----+ 当计数大于1时,我希望等待5分钟,然后将其更改回1 我想这样做,因为我想设置一个'超时'时,用户输入密码错误3次或以上 因此,我为用户输入错误密码编写了以下代码: $currentIP = $_SERVER['REMOTE_ADDR']; $ipchec
+--+--+-----+
|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表示阻塞,而是使用时间戳。当用户尝试登录时,检查当前时间并将其与数据库中的时间戳进行比较,而不是手动重置计数。在表中添加一个时间戳列,指示上次尝试的时间 检测到无效尝试时,将当前时间与记录的时间进行比较: