<?php
$floodfile = "flood.php"; // в този файл се записват IP адресите
$floodtime = 30; // времето е в секунди
$ipaddress = getrealip(); // с тази функция взимаме реалното IP
$addedtime = time(); // времето...
function flooder($ipaddress){
global $floodtime, $floodfile;
$old_db = file($floodfile);
$new_db = fopen($floodfile, w);
$result = FALSE;
foreach($old_db as $old_db_line){
$old_db_arr = explode("|", $old_db_line);
if(($old_db_arr[0] + $floodtime) > time() ){
fwrite($new_db, $old_db_line);
if($old_db_arr[1] == $ipaddress){
$result = TRUE;
}
}
}
fclose($new_db);
return $result;
}
function getrealip(){
if(getenv('HTTP_X_FORWARDED_FOR')){
$ipaddress = $_SERVER['REMOTE_ADDR'];
if(preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ipaddress3)){
$ipaddress2 = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.16\..*/', '/^10..*/', '/^224..*/', '/^240..*/');
$ipaddress = preg_replace($ipaddress2, $ipaddress, $ipaddress3[1]);
}
}else{
$ipaddress = $_SERVER['REMOTE_ADDR'];
}
if($ipaddress == ""){ $ipaddress = "12.34.56.78"; }
return $ipaddress;
}
if(flooder($ipaddress)){
echo "<center><font style=\"font-family: verdana; font-size: 11px; color: maroon;\"><b>FLOOD ЗАЩИТА!</b></font><br /><br /><font style=\"font-family: verdana; font-size: 10px; color: maroon;\">Трябва да изчакате $floodtime секунди преди да посетите страницата отново!</font></center>";
}
else
{
$floodfp = fopen($floodfile, "a");
fwrite($floodfp, "$addedtime|$ipaddress|\n");
fclose($floodfp);
echo "<center><font style=\"font-family: verdana; font-size: 11px; color: #5f5f5f;\">Здравейте! :)<br /><br />Текст";
}
?>