PDA

Просмотр полной версии : [PHP] Бан за флуд.


Deathdreams
16.06.2009, 20:15
Всем доброго времени суток.

Задумался над функцией бана в php,ниасилил.
Надеюсь на вашу помощь.

Вот пример на icq протоколе,что должна содержать функция:
она должна расчитывать время в секундах,когда пришло последнее сообщение и расчитывать время,когда пришло последнее.
если промежуток между временами больше трёх секунд,надо присвоить переменной $ban значение 1 и сделать предупреждение,что слишком часто приходят сообщения.Далее присвоить $ban значение 2 и т.п.когда колличество предупреждений привысит 5,добавить в файл bann.txt.Обнулять статистику предупреждений каждые 30 секунд.

m1lo
16.06.2009, 20:49
и что тут непонятного? сам же все описал!!!

FireFenix
16.06.2009, 21:05
//Грузим из файла параметры юзеров в массив
$user[]['ip'] - получаем айпи
$user[]['last'] - получаем время последнего сообщения unix timestamp
$user[]['warning'] - количество предупреждений (вначале 0)
$user[]['banned'] - состояние юзера (вначале False)

//по событию нового сообщения получаем $id юзера от кого пришло сообщение и делаем
if ($user[$id]['banned'] == False) //Если пользователь не забанен
{
if (time() - $user[$id]['last'] < 3) //Если время сообщений меньше 3 секунд
{
$user[$id]['warning']++; //Прибавляем 1 к предупреждениям

if ($user[$id]['warning'] > 0) //Если предупреждений больше 0
{
//Вывод сообщения а том, что часто приходят сообщения
}

if ($user[$id]['warning'] > 5) //Если предупреждений больше 5
{
//Вывод сообщения о забанивании
//Запись в файл
}
} elseif (time() - $user[$id]['last'] > 30) { //Если время сообщений больше 30 секунд
$user[$id]['warning'] = 0; //Обнуляем предупреждения
}
} else {
//Вывод сообщения о том, что юзер забанен
}

Если ждёшь, что тебе напишут готовый код, то тебе в раздел "Работа"

Deathdreams
16.06.2009, 23:27
Мне просто требовался принцип и функции.

m1lo огромное спасибо за помощь.

Клоз.