Merhaba, aşağıdaki php kodunu bazı yerlerde flood koruması yapmak için kullanıyorum ancak şöyle bir sorun var;
İlk işlemden sonra flood koruması devreye girmesi gerekirken, ilk işlemi gerçekleştirdiğimde flood uyarısı veriyor, daha sonra sağlıklı çalışmaya başlıyor.
Benim istediğim ise, ilk kullanımda engele takılmadan ilk kullanımdan sonraki kullanımlarda kodun çalışmasıdır.
Teşekkürler.
public function checkFlood($prefix)
{
$lastFloodTimeStr = "last_flood_time$prefix";
$lastFloodCountStr = "last_flood_count$prefix";
if (session_status() !== PHP_SESSION_ACTIVE)
session_start();
# burasi flood limiti 2 yaparsaniz 2 kere islem yapar
$flood_limit = 1;
# flood zamani / sn
$flood_time = 1;
if(!isset($_SESSION[$lastFloodTimeStr]))
{
$_SESSION[$lastFloodCountStr] = 1;
$_SESSION[$lastFloodTimeStr] = time();
}
$elapsed = (time() - $flood_time);
if ($_SESSION[$lastFloodTimeStr] > $elapsed) {
if (empty($_SESSION[$lastFloodCountStr])) {
$_SESSION[$lastFloodCountStr] = 1;
} elseif ($_SESSION[$lastFloodCountStr] < $flood_limit) {
$_SESSION[$lastFloodCountStr] = $_SESSION[$lastFloodCountStr] + 1;
} elseif ($_SESSION[$lastFloodCountStr] >= $flood_limit) {
$_SESSION[$lastFloodCountStr] = 0;
$_SESSION[$lastFloodTimeStr] = time();
$message = "Flood has been blocked on this system!!!";
$this->printMessage($message); // belki de sistem çalışıyor bu işi bozuyor bakalım şimdi
die("<script>alert('$message')</script>");
}
} else {
$_SESSION[$lastFloodCountStr] = 1;
}
$_SESSION[$lastFloodTimeStr] = time();
return true;
}
}