Avatar billede tanx Nybegynder
29. maj 2007 - 22:00 Der er 8 kommentarer og
2 løsninger

Ip logging - white list

Hej folkens

Scriptet herunder kontrollerer om hvor mange gange en given ip-adresse har besøgt min hjemmeside. Såfremt mere end 50 hits er registreret i min database, skriver scriptet til .htaccess og blokker adressen.

$result = mysql_query("SELECT ip,visits FROM iplogging WHERE ip = '".$ip."'");
$row = mysql_fetch_array($result);
if($row[visits]>=50){
$filename = ".htaccess";
$fp = fopen($filename,'a+');
fwrite($fp,"deny from $ip \r\n");
fclose($fp);
}

Sagen er imidlertidig den at jeg gerne vil white liste en række ip-adresser: mig selv, google, slurp m.fl. Findes der en nem! måde hvormed jeg kan white liste ip-adresserne '66.249.64.0' til '66.249.95.255'?
Jeg havde håbet, at man kunne skrive white listed ip-adresser direkte ind i scriptet, men har ikke evnerne til selv at gøre det :S. Er der nogen der kan hjælpe?

Mange hilsner
Tanx
Avatar billede 0xffff Nybegynder
29. maj 2007 - 22:45 #1
jeg ville lave en tabel der havde 2 felter, id og ip. Der ville jeg så skrive alle de IP addresser ind der skulle whitelistes.

Derefter ville jeg lave min query om til at være:

$result = mysql_query("SELECT ip,visits FROM iplogging WHERE ip not in (select ip from whitelist_tabel) and ip = '".$ip."'");
Avatar billede 0xffff Nybegynder
29. maj 2007 - 22:47 #2
På den måde ville du så dynamisk kunne whiteliste de ips som du gerne ville have til at omgå din 50hit rule.
Avatar billede tanx Nybegynder
29. maj 2007 - 23:02 #3
Heysa

Tak for dit svar - jeg har overvejet den løsning som du foreslår, men jeg er blot bekymret for at whitelist_tabel bliver for stor - googles ip-range '66.249.64.0' til '66.249.95.255' omfatter næsten 8000 ips - vil det ikke belaste serveren unødigt meget?
Avatar billede 0xffff Nybegynder
29. maj 2007 - 23:20 #4
8000 entiteter i en tabel med et unikt index på ip feltet betyder ingenting, hverken harddiskmæssigt eller søgetidsmæssigt.

Det behøver du ikke bekymre dig om.
Avatar billede jakobdo Ekspert
30. maj 2007 - 08:01 #5
Du kunne også udbygge din tabel, så den kunne indeholde ranges!

id , ip_start, ip_slut

Og husk at kig på INET_ATON() når du skal gemme IP'er!
Så kan du smide:

id = 1
ip_start = 66.249.64.0
ip_slut  = 66.249.95.255

Altså en række og ikke 8000

ligeledes vil du kunne åbne for en ip via:

id = 2
ip_start = 127.0.0.1
ip_slut  = 127.0.0.1
Avatar billede tanx Nybegynder
10. juni 2007 - 23:29 #6
Hej begge to - jeg tror jeg laver en løsning der kombinerer begge jeres forslag - så kom med nogle svar, så får I point :D

Tak for hjælpen!
Avatar billede 0xffff Nybegynder
11. juni 2007 - 00:23 #7
svar kommer her
Avatar billede jakobdo Ekspert
11. juni 2007 - 07:53 #8
Svar!
Avatar billede tanx Nybegynder
12. juni 2007 - 22:52 #9
/lukker
Avatar billede jakobdo Ekspert
13. juni 2007 - 08:56 #10
Takker for point.
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



IT-JOB

Danmarks Meteorologiske Institut

IT-operatør søges til DMI

Udviklings- og Forenklingsstyrelsen

IT-projektledere til forretningskritiske projekter

Udviklings- og Forenklingsstyrelsen

Udvikler til procesapplikationer

MAN Energy Solutions

Cloud FinOps Practitioner