[PHP] Бан за флуд.

Discussion in 'PHP' started by Deathdreams, 16 Jun 2009.

  1. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Всем доброго времени суток.

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

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

    m1lo Banned

    Joined:
    30 May 2009
    Messages:
    154
    Likes Received:
    5
    Reputations:
    0
    и что тут непонятного? сам же все описал!!!
     
  3. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    PHP:
    //Грузим из файла параметры юзеров в массив
    $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 {
      
    //Вывод сообщения о том, что юзер забанен
    }
    Если ждёшь, что тебе напишут готовый код, то тебе в раздел "Работа"
     
    1 person likes this.
  4. Deathdreams

    Deathdreams Elder - Старейшина

    Joined:
    8 Nov 2008
    Messages:
    342
    Likes Received:
    116
    Reputations:
    5
    Мне просто требовался принцип и функции.

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

    Клоз.