Добрый день. Была задача получить информацию из БД о строке в колонке lastAction (там записано время последнего запроса), если последний запрос был менее 5 минут - выдавать ошибку.
Уже второй день пытаюсь найти различные вариации сравнения, но условие не работает, есть подозрения (пытался проверять), что $row['lastAction'] возвращает нулевое значение, хотя если в phpmyadmin выполнять аналогичный запрос, то получается вывод:
active b502ee579cdf0c7ff3d50c57b75c4454
memberID 27
lastAction 2020-06-18 18:19:44
Значит, время не нулевое. Условие не срабатывает ни в каких случаях (и оно пропускается). Полагаю, это изза того, что $lastAction равен нулю (но я не понимаю почему), и при вычитании его из даты получается большое число, которое априори больше 60*5. Уже долго мучаюсь, думаю, может я не замечаю очевидную ошибку ? Буду рад, если решение всетаки найдется :)
if(!filter_var($_GET['request'], FILTER_VALIDATE_EMAIL)){
$error[] = "Incorrect e-mail address.";
} else {
$who = $_GET['request'];
$stmt = $db->prepare("SELECT active, memberID, lastAction FROM members WHERE email = :who");
$stmt->execute(array(
':who' => $who
));
if (! empty($row['active'])){
$error[] = "Couldn't find the address in the system.";
} else {
$lastAction = $row['lastAction'];
}
if ($active == 'Yes'){
$error[] = "The ".$who." account is already activated.";
}
if (strtotime(date("Y-m-d H:i:s")) - strtotime(date($lastAction)) < 5*60){
$error[] = "Less than 5 minutes have passed since your previous attempt.";
}
}