Avatar billede moddi100 Seniormester
03. juni 2008 - 21:09 Der er 22 kommentarer og
1 løsning

Ip-sporing, hvordan?

Hej

Jeg ønsker at lave en automatisk ip-sporing på min side, det skal foregå på MIN side, altså en stump kode jeg har adgang til og frit kan redigere.

Hvis ip'en sider i f.eks. århus danmark så et eller andet, sider personen i london england, så noget andet, osv...

Håber i kan hjælpe mig
Morten
Avatar billede jakobdo Ekspert
03. juni 2008 - 22:02 #1
Du kan kigge på arne_v artikel her: http://www.eksperten.dk/artikler/568
Den koster godt nok 5 point.
Avatar billede coderdk Praktikant
04. juni 2008 - 10:31 #2
http://weirdsilence.net/software/ip2c er et hurtigere alternativ, men du skal nok selv lige bygge en ny database med "IP to country database builder" og CSV'en fra ip-to-country :)
Avatar billede coderdk Praktikant
04. juni 2008 - 10:44 #3
Nå, nu byggede jeg lige en ny binær database og uploadede den, så du kan bare vælge "binary database" og downloade zip- eller .bz2-filen :)
Avatar billede coderdk Praktikant
04. juni 2008 - 10:47 #4
(ja ok, bortset fra at i weirdsilence ip2c er det kun land, ikke by der er med!)
Avatar billede jakobdo Ekspert
04. juni 2008 - 10:57 #5
coderdk: Er det dit projekt ?
Avatar billede coderdk Praktikant
04. juni 2008 - 11:28 #6
jakobdo, Ja, jeg startede det - En god ven arbejder også lidt på det af og til - Vi har en verison 2 liggende til at samle støv, som skal afpudses ;P
Avatar billede coderdk Praktikant
04. juni 2008 - 11:32 #7
heheh lidt off topic, så testede jeg lige C-implementationen på min Core 2 Duo E8200 - den laver i gennemsnit 6,5 millioner opslag pr sekund. Vildt nok :D
Avatar billede jakobdo Ekspert
04. juni 2008 - 11:41 #8
Nice. :o)
Avatar billede moddi100 Seniormester
04. juni 2008 - 18:59 #9
coderdk Kan du hjælpe mig med at sætte det op?
Avatar billede coderdk Praktikant
04. juni 2008 - 22:39 #10
Det er meget simpelt :) Du skal blot downloade zip-pakken for "Pure PHP" her:

http://weirdsilence.net/software/85/

Eller direkte link til ZIP-filen:

http://weirdsilence.net/software/85/118

Pak den ud i en folder, og download så den seneste binære database her:

http://weirdsilence.net/software/90/

Direkte link til ZIP-filen:

http://weirdsilence.net/files/assets/ws/ip2country/ip2cntry.zip

Pak den ud i samme folder som den anden, overskriv hvis nødvendigt.

Hvis du kalder index.php fra folderen indeholder den en lille demo - Du kan kigge i koden for at se detaljerne...

Demoen bruger fil-access versionen, som er lidt langsommere end memory cache versionen, men det er fint hvis du kun skal slå få IP'er op ad gangen, ellers vil jeg anbefale memory cache versionen (require ip2c_mem.php i stedet for ip2c.php).

Hvis du ikke kan lide de "døde billeder" i demoen kan du hente flagpakken på "Pure PHP" siden, eller direkte link:

http://weirdsilence.net/software/85/120
Avatar billede coderdk Praktikant
04. juni 2008 - 22:46 #11
FYI: De eneste filer der er nødvendige er:

ip2c.php (eller ip2c_mem.php hvis du bruger memory cache versionen)

isocountryarray.php (ikke nødvendig, men den oversætter korte landenavne til lange, i.e. DK = Denmark)

ip2cntry.dat (binær IP-database)

index.php (hvis du vil teste demo-versionen, eller kan den undværes hvis du skriver din egen kode)
Avatar billede moddi100 Seniormester
04. juni 2008 - 22:54 #12
Når der står sådan i CSV filen:

"62.27.6.64","62.27.6.127","1041958464","1041958527","DK","Denmark"


Betyder det så at Danmark har ip-adresserne der ligger imellem 62.27.6.64 og 62.27.6.127 eller hvad??
Avatar billede coderdk Praktikant
04. juni 2008 - 22:57 #13
Jep, den er en af mange IP-ranges der har hjemme i danmark...
Avatar billede jakobdo Ekspert
04. juni 2008 - 23:04 #14
offtopic: Hvordan finder man frem til hvor en ip/ip-range hører hjemme ?
Avatar billede coderdk Praktikant
04. juni 2008 - 23:05 #15
Men det er jo formatet for GeoIP's CSV?
CSV'en i sig selv, kan du jo ikke bruge til så meget, andet end at smide den i en form for database, eller bygge dit eget format...

F.eks. laver jeg en 828 KB fil ud af ip-to-country's 3995 KB fil hvor GeoIP's 7603 KB fil bliver til 1007 KB :)
Vores binære format er mange gange hurtigere end en SQL-server :)
Avatar billede coderdk Praktikant
04. juni 2008 - 23:08 #16
jakobdo: ARIN, RIPE og nogle andre store, administrerer IP-ranges. De uddelegerer så til forskellige andre administratorer i de forskellige lande... Du kan typisk se det i linux ved at lave en whois -L <ip>
ip-to-country er så også brugergenereret, hvor brugerne melder ind hvis de opdager en range der er forkert, eller som mangler...
Avatar billede moddi100 Seniormester
05. juni 2008 - 16:19 #17
Okay, det er endt med at jeg bare har hentet alle danske ip-adresser ud af filerne, da jeg er kommet frem til at jeg kun behøver at vide om brugere sidder i dk.

Hvad betyder de to tal efter ip-adresserne? (f.eks. "1041958464","1041958527")

coderdk smid et svar
Avatar billede coderdk Praktikant
05. juni 2008 - 17:30 #18
Det er IP'en repræsenteret som en long (32bit unsigned integer)

:)
Avatar billede coderdk Praktikant
05. juni 2008 - 17:31 #19
Avatar billede moddi100 Seniormester
05. juni 2008 - 18:09 #20
aahh. Er det ikke det samme om man en søger efter en ip der ligger mellem de to ip-adresser eller om man søger efter en 'long' der ligger imellem de to 'long' værdier??
Avatar billede coderdk Praktikant
05. juni 2008 - 21:59 #21
Lige præcis :)
Avatar billede coderdk Praktikant
05. juni 2008 - 22:00 #22
...mellem eller lig med en af dem!
Avatar billede moddi100 Seniormester
06. juni 2008 - 14:23 #23
> mellem eller lig med en af dem!

Var også det jeg mente... :D
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