Strict Standards: Resource ID#27 used as offset, casting to integer (27) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#29 used as offset, casting to integer (29) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#30 used as offset, casting to integer (30) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Скрипт антифлуда
ТвойWeb » WebMaster класс » PHP/Perl » Скрипт антифлуда

Страниц (1): [1]
 

1. Alone - 12 Ноября, 2005 - 15:33:53 - перейти к сообщению
Нашёл скриптик антифлуда. Ставится на любую странчку и закрывает доступ на столько времени насколько указываешь в скрипте.
Но чё-то не работает. Не пойму.
Вот сам скрипт:

CODE:
<?php

$ipLog='ip.txt'; // Your logfiles name here
$timeout='24'; // How many hours to block IP
$goHere='add.php'; // Allowed pages name here

// PHP script by Dave Lauderdale
// Published at: www.digi-dl.com

function record($REMOTE_ADDR,$ipLog,$goHere)
{
$log=fopen("$ipLog", "a+");
fputs ($log,$REMOTE_ADDR."][".time()."\n");
fclose($log);
Header ("Location: $goHere"); exit(0);
}
function check($REMOTE_ADDR,$ipLog,$timeout)
{
global $valid; $ip=$REMOTE_ADDR;
$data=file("$ipLog"); $now=time();

foreach ($data as $record)
{
$subdata=explode("][",$record);
if ($now < ($subdata[1]+3600*$timeout) && $ip == $subdata[0])
{
$valid=0; echo "Здравствуйте! Это система антифлуда. Данная страница будет доступна для вас снова через $timeout часов.";
break;
}
}
}
check($REMOTE_ADDR,$ipLog,$timeout);
if ($valid!="0") record($REMOTE_ADDR,$ipLog,$goHere);

?>



Файл ip.txt создал, всё находится в одной папке.
Признаки не работы: не открывается страница.
Что тут не так делаю?
2. AztEK - 13 Ноября, 2005 - 02:13:04 - перейти к сообщению
Возможные ошибки:
1)register_globals = Off, не определяется $REMOTE_ADDR, тогда надо getenv('REMOTE_ADDR'Подмигивание

2)Плохо написан последний кусок. Я бы написал так:
CODE:

function check($REMOTE_ADDR,$ipLog,$timeout)
{
global $valid;
$ip=$REMOTE_ADDR;
$data=file("$ipLog");
$now=time();

foreach ($data as $record)
{
$subdata=explode("][",$record);
if ($now < ($subdata[1]+3600*$timeout) && $ip == $subdata[0])
{
$valid=0;
echo "Здравствуйте! Это система антифлуда. Данная страница будет доступна для вас снова через $timeout часов.";
break;
}
else
{
$value = 1;
}
}
}
check($REMOTE_ADDR,$ipLog,$timeout);
if (!$valid) record($REMOTE_ADDR,$ipLog,$goHere);
3. Alone - 13 Ноября, 2005 - 12:44:22 - перейти к сообщению
Не фига...

А никто не знает какой-нить такой же попроще скриптик антифлуда?
Т.е. надо не пускать юзера 1 час на страницу после его посещения этой страницы...
4. AztEK - 14 Ноября, 2005 - 09:54:25 - перейти к сообщению
Ну а самому - этож не сложно!
Называется это не антифлуд!

toETC
Буду знать. Вы бы лучше модифицировали чтобы php код подсвечивался через highlight!

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0355]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33