View file dob/arhives/blocking.php

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;

}



?>