PDA

Просмотр полной версии : php ip ban


noisia
17.03.2008, 16:41
Нужен скрипт который бы при обращении на страницу в течении 5 секунд 3 раза, банил на 20 минут.

Isis
17.03.2008, 17:19
доступ к фаеру есть?
ОСь какая?

lsass.exe
17.03.2008, 17:27
https://forum.antichat.ru/thread48981.html
частично сорцы оттуда заюзать можешь

x88x
18.03.2008, 12:59
Нужен скрипт который бы при обращении на страницу в течении 5 секунд 3 раза, банил на 20 минут.

при обращении с одного ip-шника или с разных?

noisia
18.03.2008, 13:13
одного

Flame of Soul
19.03.2008, 00:13
Не самая удачная реализация но всеже)

<?
$limit_time = 5; //за какое время сделано $click входов чтобы банить (в секундах)
$ban_time = 20; //на сколько банить
$click = 3; //сколько входов разрешено сделать за $limit_time
$time = strftime("%M:%S", time()); //определяем время
list ($minut,$sekund) = explode(":",$time); //переводим к нужной форме
$ip_navhode = $REMOTE_ADDR; //определяем айпи адресс


session_name("testses");
session_start();
session_register("i"); //храним количество входов
session_register("m"); //храним значение минуты
session_register("s"); //храним значение секунды
//session_register("p"); //храним вспомогательное значение
if ($m==''){$m=$minut;} //если минута не была определена то определяем
if ($s==''){$s=$sekund;} //если секунда не была определена то определяем

if ($i==0) {
$s=$sekund;
$m=$minut;
}
if ($i < $click) //если сделанно входов по проверке меньше максимума то считаем их
{
$p=$i;
$i=@$i+1;
echo "ok!";
}
else //если сделанно входов по проверке больше максимума
{
if ($s<$sekund) {$raznost = ($sekund-$s);} else {$raznost = ($s-$sekund);}
echo $raznost;
$s=$sekund;
$m=$minut;
if ($raznost<$limit_time) { echo '<META HTTP-EQUIV = "Refresh" CONTENT = "0; URL = ban.php">'; $i=0;}
else { if ($p<2){ echo "GO"; $i=0; $p=@$p+1; } else { echo "GO"; $i=2; } }
}
?>

~X3RiX~
20.03.2008, 16:24
Нужен скрипт который бы при обращении на страницу в течении 5 секунд 3 раза, банил на 20 минут.

скрипт работает на файлах

1. ChFile.txt
2. BFile.txt

вот сам код


<?php

$ChFile = "ChFile.txt";
$BFile = "BFile.txt";

class XBan
{
function ChTime($ip)
{
global $ChFile;

$handle = fopen($ChFile, "a");

fwrite($handle, $ip."#".time()."\r\n");

fclose($handle);

$handle = fopen($ChFile, "r");

$Chdet = 0;

while(!feof($handle))
{
$line = fgets($handle, 1024);
$ChA = explode("#", $line);
if($ChA[0] == "$ip")
{
if($ChA[1] > time() - 5)
{
$Chdet++;

if($Chdet == 3)
{
$this->r = true;
$this->Ban($ip, time());
break;
}
}
}
}

fclose($handle);
return $this->r;
}

function Ban($ip, $time)
{
global $BFile;

$handle = fopen($BFile, "r");

while(!feof($handle))
{
$line = fgets($handle, 1024);

if(preg_match("/$ip/", $line) !== 1)
{
if(strlen($line) > 0)
{
$lines[] = $line;
}
}
}

fclose($handle);

$handle = fopen($BFile, "w");

for($i = 0; $i < count($lines); $i++)
{
fwrite($handle, $lines[$i]."\r\n");
}

fwrite($handle, $ip."*".$time."\r\n");

fclose($handle);
}

function ChDet($ip)
{
global $BFile;

if($handle = fopen($BFile, "r"))
{
while(!feof($handle))
{
$line = fgets($handle, 1024);

$BA = explode("*", $line);

if(preg_match("/$ip/", $line) !== 0)
{
if($BA[1] > time() - 1200)
{
$this->r = true;
break;
}
}
}
}
return $this->r;
}
}

$RobotX = new XBan;
$RobotX->UserIP = $_SERVER['REMOTE_ADDR'];
$RobotX->r = false;

if($RobotX->ChDet($RobotX->UserIP) == true)
{
echo("<h1>Forbidden</h1>");
}
else
{
if($RobotX->ChTime($RobotX->UserIP) == true)
{
echo("Stop!");
}
else
{
echo("Ok!");
}
}

?>


:rolleyes: