File size: 1.63Kb
<?php
//\\//\\//\\//\\//\\//\\//\// \\
// // \\
// Made by: koder // \\
// E-mail : [email protected] // \\
// // \\
//\\//\\//\\//\\//\\//\\//\\//\\/|\
$ti=4; //Для показа
function CheckIP () // Если true, юзер пытается флудить
{
$DELAY_TIME= 4; // задержка между соседними сообщениями
$flag= false; // если изменится, флуд
$fs= filesize('blocking.dat'); // Считываем массив данных
$f= fopen('blocking.dat', 'r');
flock($f, LOCK_SH);
$arr= @unserialize(fread($f, $fs));
flock($f, LOCK_UN);
fclose($f);
$IP= $_SERVER['REMOTE_ADDR']; // IP юзера
$IP=htmlspecialchars(stripslashes($IP));
$t= time(); // текущее время
if (isset($arr)) {
foreach ($arr as $k=>$v) // если для какого-то IP прошло $DELAY_TIME, снимаем блок
if ($v<$t) unset($arr[$k]);
} else $arr= array ();
if (!isset($arr[$IP])) { // После чистки остался текущий IP?
$arr[$IP]= $t + $DELAY_TIME; // Да. Снова делаем паузу в $DELAY_TIME
$flag= false;
} else {
$arr[$IP]= $t + $DELAY_TIME; // Нет. Добавляем IP.
$flag= true;
}
$f= fopen('blocking.dat', 'a+'); // Записываем изменения
flock($f, LOCK_EX);
ftruncate($f, 0);
@fwrite($f, serialize($arr));
fflush($f);
flock($f, LOCK_UN);
fclose($f);
return $flag;
}
?>