Avatar billede tanx Nybegynder
22. februar 2006 - 02:18 Der er 7 kommentarer og
1 løsning

IP logging

Davser igen,

Jeg er ude efter et script el. lign der:

1) Logger alle ip-adresser og tæller hvor mange hits den pågældende ip laver på websitet.

2) IP-loggen nulstilles hver dag f.eks. kl 23.59

3) Hvis der bliver foretaget mere end 1000 hits indenfor en 24-timers periode fra samme bruger, skal der skrives til f.eks. ban-user.php hvorefter ip-adressen xxx.xxx.xxx permanent ikke længere har adgang til websitet.

4) Det skal være muligt at lade bestemte ip-adresser hitte på websitet mere end 1000 gange i døgnet - f.eks. min egen eller google.

Håber ikke jeg er for krævende - men er der nogen der har nogle egode forslag? :)
Avatar billede radion Nybegynder
22. februar 2006 - 11:27 #1
Det er ikke noget du har mod på at forsøge selv? det er forholdsvist simpelt.

1) du bruger $_SERVER['REMOTE_ADDR'] til at få fat i adressen.
du skal bruge en tabel (tbl_adress) der har et felt med IP adresser, antal_hits og allow_more(0 for folk der ikke må have mere end 1000 hits eller 1 for folk der godt må)
hvis ipadressen findes i forvejen i tabellen, så opdaterer du antal_hits med +1

2) Loggen nulstilles, det er snildt :)
mysql_query("update tbl_ipadress Set antal_hits='0'");
og det kan gøres med hjælp fra http://cronjob.de/ hvor du kan oprette gratis cronjobs, så den bliver aktiveret kl. 00.00 ( der er kun 5 min. intervaller)

3+4)samtidig checker du antallet af antal_hits og at allow_more ikke er '1' og hvis den er 1000 eller mere kan du lægge ipadressen i en session og sende folk videre med fx.
Header("location:ban.php?");




håber det kan bruges
Avatar billede tanx Nybegynder
27. februar 2006 - 16:27 #2
hej radion - det er lykkedes mig at bixe noget kode sammen i løbet af weekenden - og næsten alt virker fint. Jeg kan dog ikke få den sidste bid til at virke. Jeg har ingen anelse om hvordan man skal få scriptet til at skrive til "ban.php" og inserte ip'en såfremt den pågældende ipadresse ikke har adgang. Ved du hvordan det skal gøres?
Avatar billede radion Nybegynder
27. februar 2006 - 21:35 #3
du får lige lidt pseudokode, så må du sige til, hvis det skal konkretiseres yderligere

- på din side checker du den aktuelle ip op imod ip'en i databasen.
- Hvis den er nået 1000 eller er banned, smider du en session og redirecter du til ban.php vha.
$_SESSION['banipadr']=true;
header('location:ban.php');

//husk du skal have session_start(); i toppen af de sider hvor du arbejder med sessions, samt du skal bruge ob_start();på første linie, hvis du redirecter på en side hvor du også vil udskrive tekst.

ovre på ban.php kan du så  checke:
$banip=$_SESSION['banipadr'];
if($banip==true){
$banthisip=$_SERVER['REMOTE_ADDR'];
//yderligere banscript, ipadressen ligger i $banthisip
}

håber det kan bruges, ellers må du sige til. Grunden til jeg laver en session er for at man ikke bare kan gå ind på ban.php og så blive ubegrundet banned..
Avatar billede tanx Nybegynder
27. februar 2006 - 22:50 #4
hej igen - tak for koden - det virker ganske upåklageligt.
Jeg fik dog en tanke som jeg med lidt håbløs kodede skriblede ned. Istedet for at skrive til ban.php ville det være interessant hvis man kunne skrive til .htaccess.
Mit kodeforslag er flg (men det virker ikke)

$result = mysql_query("SELECT $tbl_name(ip,allow) WHERE ip ='".$ip."'" AND allow ='false'")

while ($row = mysql_fetch_array($result)) {
$filename = ".htaccess";
$fp = fopen($filename,'a+');
fwrite($fp,"deny from $REMOTE_ADDR \r\n");
fclose($fp);

Kan det mon lade sig gøre, hvis koden var rigtig?
Avatar billede radion Nybegynder
28. februar 2006 - 08:06 #5
hmmm... godt spørgsmål.. ved jeg faktisk ikke.. her må andre på banen :)

Men, hvorfor vil du skrive til ban.php? er det meningen at ipadresserne skal ligge deri? hvis det er sådan, så er det væsentligt nemmere at redigere hvis du lægger dem i en mysqldatabase, og så checke i toppen af dine sider om

if((IP findes i ban database)){
die('Du har ikke adgang til denne side');
}

noget i den retning?
Avatar billede tanx Nybegynder
28. februar 2006 - 17:06 #6
Som iplogging-systemet er sat op nu, så bliver alle ip registreret - ved xx antal besøg bliver allow_more sat til 'false' i mysql-db'en. Dvs. at alle besøgende ip'erne ligger i db'en.  Det jeg så fisker lidt efter er et script der

1) chekker ip'en
2) adder ip'en til .htaccess hvis (allow_more = 'false') - så brugeren simpelthen får en 403.

Men tak for din hjælp og din tid - smid et svar - så er der point ;)
Avatar billede radion Nybegynder
01. marts 2006 - 08:06 #7
Jeg håber du får fat i de sidste par ting :)
Avatar billede tanx Nybegynder
01. marts 2006 - 11:35 #8
tak for det - mon ikke det lykkes :) Tak for hjælpen ellers.
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

PensionDanmark

Business Tester

Netcompany A/S

Software Developer

De Nationale Geologiske Undersøgelser for Danmark og Grønland (GEUS)

IT-systemadministrator søges til GEUS

Udviklings- og Forenklingsstyrelsen

Udbudsjurist til Danmarks største IT-udbud