Принцип работы:
1. Форма ( ф-я - test(false); ) запись в сессию времени
2. Обработчик - ( ф-я - test(true); ) запись в сессию времени и проверка разницы в секундах
Функция:
function test($var)
{
if($var = true)
{
if(!isset($_SESSION['form_submit_start_time']))
{
session_start();
$_SESSION['form_submit_start_time'] = time();
}
else
{
session_start();
$_SESION['form_submit_end_time'] = time();
if($_SESSION['form_submit_end_time'] - $_SESSION['form_submit_start_time'] < 5)
{
header( 'Location: '.$_SERVER['HTTP_REFERER'] );
}
}
}
else
{
unset($_SESSION['form_submit_end_time']);
unset($_SESSION['form_submit_start_time']);
}
}
Спустя 57 минут, 11 секунд (28.07.2011 - 02:55) DeeKeiD написал(а):
Написал новую ф-ю, используется 1 раз в обработчике в виде
Что можно улучшить,изменить? и вобще как вам такое решение проблемы? :huh:
// UPD хотя эта тоже криво работает :(
if(post_antiflood())
{
// Ошибка
}
else
{
// Выполняем код
}
Свернутый текст
function post_antiflood()
{
session_start();
for ($i = 0; $i <= 1; $i++)
{
echo $i;
}
if(!isset($_SESSION['form_submit_time']))
{
$_SESSION['form_submit_time'] = time();
}
$start_time = $_SESSION['form_submit_time'];
if($start_time < time(5))
{
$_SESSION['form_submit_time'] = time();
}
$result = time() - $start_time;
if($result < 5)
{
return true;
}
else
{
unset($_SESSION['form_submit_time']);
return false;
}
}
Что можно улучшить,изменить? и вобще как вам такое решение проблемы? :huh:
// UPD хотя эта тоже криво работает :(
Спустя 4 часа, 28 минут, 9 секунд (28.07.2011 - 07:23) Семён написал(а):
Что можно улучшить,изменить? и вобще как вам такое решение проблемы? :huh:
Решение на уровне школы Попова.
Что улучшить? - Хостинг с защитой от AntiDDoS
Спустя 2 часа, 11 минут, 28 секунд (28.07.2011 - 09:35) DeeKeiD написал(а):
Цитата (Семён @ 28.07.2011 - 04:23) |
Решение на уровне школы Попова. |
Всё настолько плохо :huh:
После нескольких часов тщетных попыток написать логику, и поисков в интернете, остановится на таком варрианте:
function post_antiflood()
{
session_start();
if($_SESSION["date"]>mktime()-10)
{
return true;
}
else $_SESSION["date"]=mktime();
}
if(isset($_POST['test']))
{
if(post_antiflood())
{
// Ошибка
}
else
{
// Выполнение кода
}
}
Спустя 23 минуты, 43 секунды (28.07.2011 - 09:58) Семён написал(а):
Поверь тебе это не поможет. )
Спустя 9 минут, 8 секунд (28.07.2011 - 10:08) VELIK505 написал(а):
Я раньше пытался делать такие темы. Всякие сверки запросов урезание кол-ва запросов в минуту на 1 айпи и тд. И в итоге пришёл к выводу что всё это фуфел. Кому надо тот тебя и без этого заддосит. Трафик должен фильтроваться со стороны сервера а не скрипта.
Спустя 17 минут, 32 секунды (28.07.2011 - 10:25) DeeKeiD написал(а):
Это не для защиты от ддоса, это для защиты от криворуких пользователей.
// оффтоп, кто подскажет как организовать базу для модуля друзья?
// оффтоп, кто подскажет как организовать базу для модуля друзья?
Спустя 2 часа, 7 минут, 3 секунды (28.07.2011 - 12:32) killer8080 написал(а):
Цитата (DeeKeiD @ 28.07.2011 - 10:25) |
Это не для защиты от ддоса, это для защиты от криворуких пользователей. |
для защиты от F5, достаточно просто делать редирект после успешного занесения в базу.
_____________
Бесполезно просить пощады у цезаря
Фатальная ошибка : Звонок в неопределенную функцию ©