Webmaster общности: Predpriemach.com | SearchEngines.bg

    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 (примерно).