Sitedeki hareket hızını belirleyebiliyorsunuz.Kodlarda gerekli yerlere açıklamayı yaptım. Bence iş görür.
<?php
$ad_delay = 1; // 1 saniye aralıklarla harekete/işleme/refresh'e izin verir. (Makul olanı: 2)
// bir işlemden diğer işleme geçiş için izin verilen süre.
// Örnek: bunu 50 saniye yaparsanız; kullanıcı bir işlem yapıp diğer işleme geçebilmesi için en az 50 saniye beklemesi gerekecektir.
$ad_DirName=$_SERVER['DOCUMENT_ROOT'].'/tmp'; // tmp klasörü oluştur ve yazma hakkı ver. IP log
/* Arama motorlarına herşey serbest */
$ad_Robots_UserAgent=array(
'aipbot',
'Aport',
'eStyleSearch',
'Gigabot',
'Gokubot',
'Google',
'MJ12bot',
'msnbot',
'PlantyNet_WebRobot',
'StackRambler',
'TurtleScanner',
'Yahoo',
'Yandex',
'YaDirectBot',
);
/* F5 yapmayacağına inandığınız IP'ler :=) */
$ad_good_ip = array(
'127.0.0.1',
);
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('Dizinde Geçici Dosyalar Bulunamadı.');
$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);
?>
<!doctype html public "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>503</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9" />
<meta http-equiv="Refresh" content="15">
</head>
<body>
<h1>Yavaş Gel - 503 </h1>
<p>Dostum çok hızlı hareket ediyorsun :) <br><br> Uslu olursan, 15 saniye sonra herşey normale dönecek.</p>
</body>
</html>
<?php
ad_WiteIP($ad_DirName);
exit;
}else{
ad_WiteIP($ad_DirName);
}
}
?>