Файл: sistem/flud.php
Строк: 26
<?php # Created by Up
// Хотел анти флуд едокий сделать, но в связи с тем что, если уж захотят положить сервер, этот файл им только поможет...файл не используется системой, а удалять лень
$pack='';
$time=time();
/*for($i=0; $i<100000; ++$i)
$pack.=pack('LLc',ip2long(rand(10,255).'.'.rand(10,255).'.'.rand(10,255).'.'.rand(10,255)),$time,1);
*/
$new_ip=true;
$id=0;
$ip=ip2long($_SERVER['REMOTE_ADDR']);
$fp=fopen($config['OTS'].'sistem/data/flud.dat','r+b');
flock($fp,LOCK_EX);
while($bin=fread($fp,9))
{
++$id;
$str=unpack('Lip/Ltime/cflud',$bin);
if($str['time']+60<$time and ($str['flud']<30 or $str['time']+60*60<$time))
continue;
if($str['ip']!==$ip)
{
$pack.=$bin;
continue;
}
else
{
if($str['flud']>=30)
exit('Sorry, ip '.$_SERVER['REMOTE_ADDR'].' for blocked!');
$new_ip=false;
unset($pack);
fseek($fp,(($id*9)-9));
fwrite($fp,pack('LLc',$ip,$str['time'],(++$str['flud'])));
break;
}
}
if($new_ip)
{
fseek($fp,0);
ftruncate($fp,0);
fwrite($fp,$pack.pack('LLc',$ip,$time,1));
}
fclose($fp);
unset($ip,$str,$bin,$new_ip,$time,$fp,$pack);
?>