в index.php в корне сайта вставляем перед <?php
<?php
$ad_delay=1;
$ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp';
$ad_Robots_UserAgent=array(
'aipbot',
'Aport',
'eStyleSearch',
'Gigabot',
'Gokubot',
'Google',
'MJ12bot',
'msnbot',
'PlantyNet_WebRobot',
'StackRambler',
'TurtleScanner',
'Yahoo',
'Yandex',
'YaDirectBot',
);
$ad_good_ip = array(
'217.107.36.73',
);
function ad_WiteIP($dir){
$f=fopen($dir.'/a'.$_SERVER['REMOTE_ADDR'], 'w');
fclose($f);
}
$ad_IsRobot=false;
foreach ($ad_Robots_UserAgent as $match){
if (strstr($_SERVER['HTTP_USER_AGENT'], $match)){
$ad_IsRobot=true;
break;
}
}
if( in_array($_SERVER['REMOTE_ADDR'], $ad_good_ip) ) {
$good_ip = true;
} else {
$good_ip = false;
}
if (!$ad_IsRobot AND !$good_ip){
session_start();
}
if (!$ad_IsRobot AND !$good_ip){
$ad_dir =opendir($ad_DirName)
or die('Отсутствует директория для временных файлов');
$ad_now =time();
$ad_forbid =$ad_now-$ad_delay;
while (false!==($ad_FName=readdir($ad_dir))){
if (ereg('^a[1-9]',$ad_FName)
&& (@ filemtime($ad_DirName.'/'.$ad_FName)<$ad_forbid)){
@ unlink($ad_DirName.'/'.$ad_FName);
}
}
closedir($ad_dir);
if (file_exists($ad_DirName.'/a'.$_SERVER['REMOTE_ADDR'])){
header('HTTP/1.0 503 Service Unavailable');
header('Status: 503 Service Unavailable');
header('Retry-After: '.$ad_delay*3);
$redirectUrl = $_SERVER['REQUEST_URI'];
echo ("
<form name='redirect'>
<center>
<font face='Arial'><b>Вы делаете слишком много запросов в секунду!<br>Перенаправление на запрашиваемую страницу<br>через
<form>
<input type='text' size='3' name='redirect2' disabled='disabled'>
</form>
секунд</b></font>
</center>
<script>
<!--
var targetURL='$redirectUrl'
var countdownfrom=5
var currentsecond=document.redirect.redirect2.value=countdownfrom+1
function countredirect(){
if (currentsecond!=1){
currentsecond-=1
document.redirect.redirect2.value=currentsecond
}
else{
window.location=targetURL
return
}
setTimeout('countredirect()',1000)
}
countredirect()
//-->
</script>");
ad_WiteIP($ad_DirName);
exit;
}else{
ad_WiteIP($ad_DirName);
}
}
?>
где
$ad_Robots_UserAgent - список ботов для посещения без лимита
$ad_good_ip - адреса для безлимитного посещения
колличество ображений вычисляйте для себя сами
по умолчанию
$ad_delay=1;
вычисление
$ad_now =time();
$ad_forbid =$ad_now-$ad_delay;
папка для логирования сессий
$ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/
tmp'; //можно изменить на другую
по умолчанию разрешено не более 3 обращений в секунду с одного IP иначе
demo:
http://gameroyal.rup/s
не забудьте сохранить index.php в utf8
прикрепляю корневой index.php для Joomla 2.5
[вложение удалено Администратором]