
20.03.2008, 16:24
|
|
Banned
Регистрация: 14.03.2008
Сообщений: 36
С нами:
9557606
Репутация:
9
|
|
Сообщение от noisia
Нужен скрипт который бы при обращении на страницу в течении 5 секунд 3 раза, банил на 20 минут.
скрипт работает на файлах
1. ChFile.txt
2. BFile.txt
вот сам код
PHP код:
<?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!");
}
}
?>

Последний раз редактировалось ~X3RiX~; 20.03.2008 в 17:48..
|
|
|