Время PHP истекло с MySQL DateTime

0

Я пишу систему входа в PHP и хотел бы реализовать функцию, которая проверяет, прошло ли 15 минут с момента последней неудачной попытки входа в систему.

В базе данных MySQL в таблице моих пользователей есть столбец с именем last_login_datetime, который определяется как формат SQL DATETIME, например. 2018-02-24 21:12:57.

Это код, который я использую, чтобы проверить, прошло ли 15 минут с момента последнего сбой входа в систему

$dateTime = date("Y-m-d H:i:s");

if($row['user_locked']==$statusY AND $dateTime - strtotime($row['last_loginfail_datetime'] > 15 * 60))
{
.....
}

На данный момент это не работает для меня, и надеялся, если кто-нибудь сможет указать, где я ошибаюсь?

Заранее спасибо.

  • 0
    Объясните нам точную ошибку, которую вы получаете, или вывод, который вы получаете.
  • 0
    Не получая никаких ошибок, просто всегда возвращается как истина
Показать ещё 2 комментария
Теги:

3 ответа

4
Лучший ответ

Это не работает, потому что вы вычитаете unix-время из строковой даты. Что вам нужно сделать, так это получить $dateTime как unix-время.

$dateTime = strtotime("now");
1

Просто используйте strtotime($dateTime) вместо $dateTime в if. strtotime возвращает UNIX tiemstamp, то есть: количество секунд с 1 января 1970 00:00:00 GMT $ dateTime = date ("Ymd H: i: s");

if($row['user_locked']==$statusY AND strtotime($dateTime) - strtotime($row['last_loginfail_datetime'] > 15 * 60))
{
.....
}
0

Ваш код не будет работать, потому что ваша дата будет считана в виде строки. Попробуйте это вместо этого:

$dateTime = strtotime("now");

if($row['user_locked']==$statusY AND $dateTime - strtotime($row['last_loginfail_datetime'] > 15 * 60))
{
.....
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню