さて、私の問題は次のとおりです。ユーザーがログイン試行に 3 回失敗すると、IP アドレスに基づいて 1 時間アカウントからロックアウトされることになっています。IP アドレスは、「試行回数」および「時間」フィールドとともに「login_attempts」テーブルに格納されます。時間を取得するコードを次に示します。これは、ユーザーが再度ログインを試みることができる時間であるため、それに 1 時間を追加します。
$user_time = new DateTime('20:04:18'); // example time pulled from the db
$add = new DateInterval('PT1H'); // +1 hour
$user->add($add); // should now be 21:04:18
さて、ここに現在の時刻のコードがあります。もう一度、時間を作ります。1 時間もかからないので、ユーザーはまだロックアウトされているはずです。
$now = new DateTime('20:43:22');
if ($now->format('g:i a') < $user_time->format('g:i a')) {
$diff = $user_time->diff($now);
echo 'You still have ' . $diff->format('%i minutes') . ' until you can try again.';
}
else {
// reset login attempts, process login
何らかの理由で、これが正しく機能しません。私は何を間違っていますか?