Avatar billede tanx Nybegynder
02. juni 2008 - 01:37 Der er 3 kommentarer

Script til blokering af mange hits

Hej folkens

Nedenstående script returnere en 403 hvis en bestemt ip-adresse har lavet mere end 100 server requests til en php-side. Ulempen ved scriptet er dog at det udelukker ipadresser der gerne må besøge sitet i det uendelige. Mit spg er, hvordan lader jeg f.eks. alle googles ip-adresser (66.249.64.000 - 66.249.95.255) passere uden at blive blokket efter 100 hits? Kan nogen hjælpe med at skrive det ind i scriptet?

Håber I kan hjælpe!

------------------------------------------
$ip = $_SERVER['REMOTE_ADDR'];
$entrypage = $_SERVER['REQUEST_URI'];
$lastpage = $_SERVER['REQUEST_URI'];
$referer = $_SERVER['HTTP_REFERER'];
$firstvisit = date('Y-m-d H:i:s');
$useragent = $_SERVER['HTTP_USER_AGENT'];
$fetch = mysql_query("SELECT ip, useragent FROM iplogging WHERE ip ='".$ip."'") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
  mysql_query("INSERT INTO iplogging(ip,visits,entrypage,referer,firstvisit,useragent) VALUES('$ip','1','$entrypage','$referer','$firstvisit','$useragent')") or die(mysql_error());
} else {
  mysql_query("UPDATE iplogging SET lastpage='$lastpage',visits=visits+1 WHERE ip = '$ip'") or die(mysql_error());
}
$result = mysql_query("SELECT ip,visits FROM iplogging WHERE ip = '".$ip."'");
$row = mysql_fetch_array($result);
if($row[visits]>=100){
$filename = ".htaccess";
$fp = fopen($filename,'a+');
fwrite($fp,"deny from $ip \r\n");
fclose($fp);
}

--------------------------

På forhånd tak - tanx
Avatar billede jakobdo Ekspert
02. juni 2008 - 08:39 #1
Først og fremmest ville jeg gemme ip-adresser som et range.

IP-start (66.249.64.000)
IP-end  (66.249.95.255)

Og så ville jeg smide et felt ekstra på, som hed: uendeligt eller unlimited
Hvis det er sat til 1, så får det lov at fortsætte, hvis 0, så kører du som hidtil.
Avatar billede jakobdo Ekspert
02. juni 2008 - 17:37 #2
Og jeg ville ikke gemme ip'er som ip, men smide dem via inet_aton()
Avatar billede olebole Juniormester
04. juni 2008 - 16:10 #3
<ole>

Hvad nu, hvis der sidder 200 elever på en skole - eller 200 medarbejdere på en arbejdsplads - som gerne vil se siden. Skal de sidste 100 så afvises?  =)

/mvh
</bole>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester