Bu kodun flood koruması amacına uygun çalışması için aşağıdaki değişiklikleri yapmanız gerekmektedir:
$elapsed değişkeninin hesaplanması: $flood_time değişkeninin değeri saniye cinsinden belirtilmiştir. Ancak $elapsed değişkeninin hesaplanmasında $flood_time değerinin dikkate alınmaması gerekiyor. Bunun yerine $_SESSION[$lastFloodTimeStr] değişkeninin değerine göre hesaplama yapılması gerekiyor. Bu nedenle $elapsed değişkeninin hesaplanması aşağıdaki gibi değiştirilmelidir:
$elapsed = (time() - $_SESSION[$lastFloodTimeStr]);
İlk kullanımda flood korumasının devre dışı kalması: İlk kullanımda $_SESSION[$lastFloodTimeStr] değişkeni henüz tanımlanmadığı için, $elapsed değişkeninin değeri negatif olacaktır. Bu durumda flood korumasının devre dışı kalması gerekiyor. Aşağıdaki değişikliklerle bu sağlanabilir:
if (!isset($_SESSION[$lastFloodTimeStr])) {
$_SESSION[$lastFloodCountStr] = 1;
$_SESSION[$lastFloodTimeStr] = time();
return true;
}
$elapsed = (time() - $_SESSION[$lastFloodTimeStr]);
if ($elapsed < $flood_time) {
...
Yukarıdaki değişikliklerle birlikte kod aşağıdaki gibi olmalıdır:
public function checkFlood($prefix)
{
    $lastFloodTimeStr = "last_flood_time$prefix"; // $_SESSION içinde son flood zamanını tutan değişkenin adı
    $lastFloodCountStr = "last_flood_count$prefix"; // $_SESSION içinde son flood sayısını tutan değişkenin adı
    if (session_status() !== PHP_SESSION_ACTIVE) {
        session_start(); // eğer session henüz başlatılmadıysa başlatır
    }
    $flood_limit = 1; // aynı işlemi bir saniye içinde kaç kez yapabileceğimizi belirten değişken
    $flood_time = 1; // aynı işlemi tekrar yapabilmek için beklememiz gereken süre (saniye)
    if (!isset($_SESSION[$lastFloodTimeStr])) {
        $_SESSION[$lastFloodCountStr] = 1; // ilk kez işlem yapıldığında flood sayısı 1 olarak ayarlanır
        $_SESSION[$lastFloodTimeStr] = time(); // ilk kez işlem yapıldığında son flood zamanı olarak mevcut zaman atanır
        return true; // ilk işlem başarılı olacağı için true değeri döndürülür
    }
    $elapsed = (time() - $_SESSION[$lastFloodTimeStr]); // son işlemden geçen süre hesaplanır
    if ($elapsed < $flood_time) { // eğer son işlemden geçen süre beklenen süreden küçükse
        if (empty($_SESSION[$lastFloodCountStr])) {
            $_SESSION[$lastFloodCountStr] = 1;
        } elseif ($_SESSION[$lastFloodCountStr] < $flood_limit) {
            $_SESSION[$lastFloodCountStr] = $_SESSION[$lastFloodCountStr] + 1;
        } elseif ($_SESSION[$lastFloodCountStr] >= $flood_limit) { // flood limiti aşıldığında
            $_SESSION[$lastFloodCountStr] = 0; // son flood sayısı sıfırlanır
            $_SESSION[$lastFloodTimeStr] = time(); // yeni bir flood zamanı atanır
            $message = "Flood has been blocked on this system!!!"; // mesaj değişkeni tanımlanır
            $this->printMessage($message); // mesaj ekrana yazdırılır
            die("<script>alert('$message')</script>"); // mesaj bir javascript alert kutusu olarak gösterilir ve işlem sonlandırılır
        }
    } else { // eğer son işlemden geçen süre beklenen süreden büyük veya eşitse
        $_SESSION[$lastFloodCountStr] = 1; // son flood sayısı 1 olarak ayarlanır
    }
    $_SESSION[$lastFloodTimeStr] = time(); // yeni bir flood zamanı atanır
    return true; // işlem başarılı olduğu için true değeri döndürülür
}