What are the advantages and disadvantages of using a timestamp-based system for managing failed login attempts in PHP?

Using a timestamp-based system for managing failed login attempts in PHP can help prevent brute force attacks by limiting the number of login attempts within a certain time frame. However, it may also introduce complexity in managing and updating timestamps for each failed attempt.

// Check if user has exceeded maximum login attempts within a certain time frame
$maxAttempts = 3;
$attemptWindow = 5; // in minutes
$failedAttempts = []; // store failed attempts in database or session

// Check if user has exceeded maximum login attempts
if(count($failedAttempts) >= $maxAttempts) {
    $lastAttemptTime = end($failedAttempts);
    $currentTime = time();
    
    // Check if last attempt was within the attempt window
    if($currentTime - $lastAttemptTime < $attemptWindow * 60) {
        // Display error message or lock user out
        echo "Maximum login attempts exceeded. Please try again later.";
        exit;
    }
}

// If login attempt is unsuccessful, add timestamp to failed attempts array
$failedAttempts[] = time();

// Code to handle login attempt