Привет, Илья!
Совершенно непонятно, что именно у тебя не получилось, но твой кусок
кода я для себя исправил бы так:
$ip = $ENV{'REMOTE_ADDR'};
$min_time = time - 30 * 60;
open(BAN, "feedback-ban.dat");
while(<BAN>)
{
push(@ban, $_)
}
close(BAN);
foreach $line (@ban)
{
($ban_ip, $ban_time) = split(/\t/, $line);
if ($line == $ip && $ban_time > $min_time)
......
Пашка
12 апреля 2005 г., 15:49:51, Ilya Tatarnikov <jackso***@r*****.com> wrote:
IT> Тоесть крон может очистить список ip в тот момент, когда скрипт
IT> заносит туда запись? Да, точно.
IT> Вот только до меня всё не доходит, как реализовать "рекламную паузу"
IT> например, ну минут на 30.
IT> Вот я тут что-то пытался сделать, но не получается проверка времени.
IT> IT> $ip = $ENV{'REMOTE_ADDR'};
IT> ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
IT> open(BAN, "feedback-ban.dat");
IT> while(<BAN>)
IT> {
IT> push(@ban, $_)
IT> }
IT> close(BAN);
IT> foreach $line (@ban)
IT> {
IT> if (($line ~= /$ip/)
IT> ......
IT> IT> Если кто знает, как это реализовать, помогите! :)
IT> Monday, April 11, 2005 - 11:18:54 PM, Пашка <pav***@l*****.ru> wrote:
>> На самом деле насчет крона - плохая идея. Получается слишком много не
>> зависящих друг от друга блоков у программы, которые еще к тому же
>> могут выполняться параллельно и это надо учитывать. Лучше удаление
>> старых записей сделать здесь же при проверке...
>> Пашка
>> 11 апреля 2005 г., 17:57:46, Ilya Tatarnikov
>> <jackso***@r*****.com> wrote:
IT>>> Точно! На счет Cron'а - это хорошая идея!
IT>>> Monday, April 11, 2005 - 8:44:01 PM, Begemot
IT>>> <begemotina20***@m*****.ru> wrote:
IT>>>>> Кто-нибудь знает, как можно в Perl реализовать антифлуд по ip-адресу
IT>>>>> отправителя?
IT>>>>> Я знаю, что инфу о ip можно вынуть из $ENV{'REMOTE_ADDR'} но как
IT>>>>> сделать так, чтобы с этого ip можно было отправить сообщение (читай
IT>>>>> запустить скрипт) только раз в 5 минут?
>>>> При отправке сообщения проверять есть ли данный ip в базе если нет, то
>>>> оправлять сообщение и ip заносить в базу. Если же есть то запрещать
>>>> отправку. Каждые пять минут cron'ом запускать скрипт очистки базы -
>>>> т.е. удалять все записи которые "состарились", т.е. их возраст больше
>>>> 5 минут.
>>>> А вообще делай не 5 минут, а хотя бы 1 час. :-)
IT>>> --
IT>>> Regards,
IT>>> Ilya Tatarnikoff
IT>>> mailto:webmast***@r*****.com
IT>>> ICQ number: 317134899
IT>>> PGP key ID: 0x18EA20AE
IT>>> Monday, April 11, 2005 - 9:56:30 PM
IT>>> библиотекa сайтостроительства http://www.i2r.ru/static/244/
>> библиотекa сайтостроительства http://www.i2r.ru/static/244/
IT> --
IT> Regards,
IT> Ilya Tatarnikoff
IT> mailto:webmast***@r*****.com
IT> ICQ number: 317134899
IT> PGP key ID: 0x18EA20AE
IT> Tuesday, April 12, 2005 - 7:43:39 PM
IT> библиотекa сайтостроительства http://www.i2r.ru/static/244/
библиотекa сайтостроительства http://www.i2r.ru/static/244/