Flood защита :)
Здравейте, туристи!

Предлагам на вашето внимание код, с който ще може да защитите вашата книга за гости, чат (tag board), форма за контакти, повторно показване на страницата.. и т.н. Smile

Долу има демо, на което ще видите как работи кода. Нагласил съм го да... абе я направо вижте! Laughing

index.php
<?php

$floodfile = "flood.php"; // в този файл се записват IP адресите
$floodtime = 30; // времето е в секунди
$ipaddress = getrealip(); // с тази функция взимаме реалното IP
$addedtime = time(); // времето...

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>";
exit;
}
else{
$floodfp = fopen($floodfile, "a");
fwrite($floodfp, "$addedtime|$ipaddress|\n");
fclose($floodfp);
}

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;
}

echo "<center><font style=\"font-family: verdana; font-size: 11px; color: #5f5f5f;\">Здравейте! :)<br /><br />Flood защитата е настроена за <b>$floodtime</b> сек., това ще рече, че ако в рамките на $floodtime секунди рефрешнете страницата,<br />това изречение няма да е видимо, защото IP адреса ви ще бъде записан във файла <b>$floodfile</b> за $floodtime сек.<br /><br />Поздрави, DJCharge</font></center>";

?>


Не забравяйте да създадете и празен файл flood.php (примерно).






/ Трябва да сте регистриран за да напишете коментар /
От: nfarkt
10:34 21-01-2011
Егати дивото ;дд Евала!
От: asenovgrad
8:55 29-03-2011
Някой може ли да ми каже на тези два реда какво точно трябва да се промени.Благодаря Предварително.


$ipaddress = getrealip(); // с тази функция взимаме реалното IP
$addedtime = time(); // времето...
От: DJCharge
23:44 11-11-2011
По тях нищо не трябва да се променя.
От: crazzybg
13:55 20-05-2012
лично на мене неми допада но урочето е добре и работи
От: DevNull
13:22 19-04-2013
Има ли възможност да записва и чете от MySQL базаданни ?
1