Контакты
Местоположение
Россия

Наибольший вклад в теги

Все теги (5)

Лучшие ответы пользователя

Все ответы (7)
  • Как ограничить частоту запросов с одного IP адреса?

    @YakushinIlya
    Если без БД то файловая система остается.
    Например, при заходе посетителя создаем файл с именем его IP и записываем туда time():
    // Открываем файл, флаг W означает - файл открыт на запись
    $f_hdl = fopen($_SERVER['REMOTE_ADDR'].".txt", 'w');
    // Записываем в файл $text
    fwrite($f_hdl, time());
    // Закрывает открытый файл
    fclose($f_hdl);


    При следующем заходе можно открыть файл если он существует и проверить содержимое, например так:
    if($time=file_get_contents($_SERVER['REMOTE_ADDR'].".txt",)) {
    // в переменную $time будет записано time() с предыдущего захода. 
    // проверяем промежуток между заходами
    $result = time() - $time;
    // в переменную $result записано промежуточное время между заходами в миллисекундах
    }


    Далее просто остается определить достаточное это время для того чтоб блокировать вход или нет.
    Например:
    // Переменная $myTime содержит время через которое можно его пускать еще раз
    $myTime = 600; 
    $result = 60;
    
    if($myTime > $result) {
    header("HTTP/1.1 503");
    exit();
    }


    Выше условие, если он зашел чаще чем дозволено в миллисекундах то выдается заголовок с кодом 503 и дальше останавливается выполнение скрипта.
    Ответ написан
    1 комментарий

Лучшие вопросы пользователя

Все вопросы (22)