Oprettet fre. d. 10. februar 2012 kl. 11:19:37

minoza
minoza (755 point. Point ude: 15)

IP til land

Hejsa, jeg er ved at opbygge en lille fin database hvor jeg registrerer mine brugere efter IP adresse. Jeg vil gerne vise både deres land som tekst og som flag baseret på denne ip adresse. Jeg ved at der er mange ip-to-country sider hvor man kan gøre dette, men jeg kunne nu godt tænke mig at køre det hele i mit eget php script.

Jeg ved at f.eks. http://geolite.maxmind.com
deler gladeligt ud af deres ip-to-country database her: http://geolite.maxmind.com/ (...)

Jeg ved bare ikke hvordan jeg skal gribe det an, og om der findes en nemmere måde? De variabler jeg er på udkig efter skulle gerne returneres som f.eks.: Denmark, DK. Det ved jeg at geolite's database gør (når man ved hvordan).

Er der nogen der kan hjælpe mig godt igang?

Skrevet fre. d. 10. februar 2012 kl. 11:49:42| #1

claes57
claes57 (30.291 point)
bare tag det datasæt - der er 6 kolonner.
de første 2 er ip-adresse interval - det er dumt at søge på.
de næste 2 er ip-adresserne omregnet til et tal - det er det, du skal gøre med din brugers ip, og søge her.
så kommer 2 kolonner med land-id og navn, som skal returneres.

omregning fra ip-adresse til tal:
det første tal ganger du med 256
læg tal 2 til, og gang med 256
læg tal 3 til og gang med 256
læg tal 4 til, og du har det unikke tal, der kan søges efter - du skal bare finde en post, hvor kolonne3 er mindre og kolonne4 er større end det beregnede tal.

Skrevet fre. d. 10. februar 2012 kl. 14:36:42| #2

olebole
olebole (214.613 point)
<ole>

Læs arne_v's fortrinlige guide om geolocation med PHP

/mvh
</bole>

Skrevet man. d. 13. februar 2012 kl. 09:09:10| #3

minoza
minoza (755 point)
tak for foreslagene :-) Arnes kode er dog et par grader over mine evner, så jeg måtte opgive at forstå koden efter lang tids bøvlen med ikke at kunne få det til at virke. Jeg fik dog en skabelon og et udgangspunkt, så mange tak!

jeg har fået det til at virke med denne kode:

include("geoip.inc");
include("countries.php");
$geoDB = geoip_open("GeoIP.dat", GEOIP_STANDARD);
$iploc  = geoip_country_code_by_addr($geoDB, $IP);
$Country = $countries[$iploc][1];
$Host = gethostbyaddr($IP);

den returnerer så fint med DENMARK etc. Og så er det lige jeg løb ind i et andet problem. Den returnerer lande som UNITED STATES o.lign med mellemrum, det er fint når landet skal læses på skærmen, men jeg har problemer med at få det til at virke når jeg samtidig refererer til et gif billede af samme navn, dem hvor der er mellemrum i nevnet bliver ikke vist? her er min lille kode til flagene:

$flag = $row['Country'] . ".gif";
list($width, $height, $type, $attr) = getimagesize("Flags/" . $flag);
$f = 30 / $height;
$h = $height * $f;
$w = $width * $f;
echo "<img src = Flags/" . $flag . " align='middle' valign='top' width=" . $w . "px height=" . $h ."px> </th></tr>";

$row['Country'] er landet returneret fra GeoIP's database, jeg opbevarer dem og henter dem fra egen database.

Nogen gode råd? ... hov og smid lige et svar begge to så i kan dele pointene :-)

Skrevet man. d. 13. februar 2012 kl. 10:10:20| #4

claes57
claes57 (30.291 point)
med str-replace
http://php.net/ (...)
kan du fjerne alle mellemrum, og dermed få et brugbart navn til din gif.
det er kun linjen
$flag = $row['Country'] . ".gif";
der skal tilrettes

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Brugerliste med link til profil

Oprettet den 26. maj 2012 kl. 14.29
sayn giver 30 point for svar | Giv et svar »

php curl driller

Oprettet den 26. maj 2012 kl. 08.31
PHPnQrd giver 200 point for svar | Giv et svar »

Array i array

Oprettet den 25. maj 2012 kl. 08.32
sebster giver 60 point for svar | Giv et svar »



   




Tips & Tricks fra PC World

Teaser billede

Læserne: Her er vores værste it-indkøb

Det er ikke al it-udstyr, som er det rene guld. Her er nogle af læsernes skrækhistorier.


Anmeldelser fra PC World

Teaser billede

Test: Mobil med Ferrari-design - og en Trabant-motor

Motorola har begået endnu en smartphone med lækkert design og potentiale til at være blandt de bedste. Men den når ikke i mål. Se her hvorfor.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Sådan siger du farvel til Facebook

Læs her, hvordan du dropper Facebook og i stedet anvender nogle brugervenlige alternativer, så du stadig kan være social på nettet.


Nyheder fra Computerworld

Teaser billede

Galleri: De fedeste håndholdte gennem 40 år

Her har du de mest banebrydende håndholdte computere gennem alle tider.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger