Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Serg Chervjakov                      2:5020/400     07 Jul 2003  01:20:38
 To : Vitaly Cheprasov
 Subject : флуд
 -------------------------------------------------------------------------------- 
 
 Mon Jul 07 2003 00:26, Vitaly Cheprasov wrote to All:
 
  VC> как сфоргаHить защиту от флуда в чате????
 
   Если я не ошибаюсь, флуд - это ведь когда одно и то же сообщение
 отправляется дважды в короткий промежуток времени? (напр. два раза нажал на
 кнопку отправить)
   Hу так из этого и исходи. Ты перед тем как спрашивать сам подумал, я
 надеюсь? Составь сначала алгоритм: "
 1) у каждого юзера есть свои идентификатор. Hу если в чате нужна регистрация,
 то этот идентификатор - логин или ID номер. который присваивается во время
 регистрации. Если без регистрации, значит - это IP.
 2) юзер "ИдЕнТиФиКаТоР" шлет "СоОбЩеHиЕ". проверяем, какие сообщения этот юзер
 вообще отправлял и смотрим - небыло ли такого же. Как это делать:
  Первый вариант: отправленные сообщения скажем хранятся в базе данных, скажем
 в таблице пользователей, скажем в столбце "last_mes" через разделитель
 ";razd;" - но надо хранить лишь скажем последние 20 мессаг. Достаешь их,
 делаешь split и grep или как-то по-другому - это думай сам.
  Второй вариант: делаешь доп. таблицу (Messages) - туда записываешь все
 отправляемые всеми юзерами мессаги. В одном столбце - мессага, второй столбец
 - идентификатор юзера, третий - время записи. Делаешь запрос, где просишь
 выдать записи, где текст сообщения - "СоОбЩеHиЕ", а идентификатор -
 "ИдЕнТиФиКаТоР" и время записи: больше time-15 (к примеру - если нужна пауза
 
 >15 сек).
 
  Если что-то найдено - шлем юзера подальше. Выход.
 
 Дальше буду писать лишь для второго варианта - ибо он наиболее красив и скорее
 всего в твоем чате есть такая или подобная таблица.
 
 3) Добавляешь запись в таблицу Messages (СоОбЩеHиЕ, ИдЕнТиФиКаТоР, Время).
 
 Все.
 
 Это на случай, если чат на базе данных. Если нет (сообщения - в файле), то
 делаешь чуточку по-другому. Все-равно должен быть файл-аналог таблицы
 Messages, где хранятся сообщения (и выдаются всем посетителям чата). Тебе
 остается первой строчкой каждого сообщения указывать, кто и когда его
 отправил. А дальше юзать grep, возможно map (странно, но с последним я сам еще
 не работал:) ). Уж как ты будешь это делать - твое дело - это излишне долго
 рассказывать, как я бы это сделал.
 
 А вообще - я думаю стоит самому подумать на эту тему. Может я тут немного все
 запутано написал, но основную идею отсуда выдрать можно. Эта задача слишком
 проста, что бы ее объяснять и она слишком мало относится к перлу, что бы можно
 было просто написать скрипт - ведь я не знаю, что у тебя за чат и как и что в
 нм ханится.
 
 --- ifmail v.2.15dev5
  * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 флуд   Vitaly Cheprasov   07 Jul 2003 00:26:57 
 флуд   Serg Chervjakov   07 Jul 2003 01:20:38 
 Re: флуд   Artem Chuprina   07 Jul 2003 14:07:56 
 Re: флуд   Serg Chervjakov   07 Jul 2003 15:43:56 
 Re: флуд   Moderator of RU.PERL   07 Jul 2003 14:16:43 
Архивное /ru.perl/166794b5ac1d4.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional