Avatar billede axl_rose Nybegynder
07. marts 2006 - 13:40 Der er 19 kommentarer og
1 løsning

Ip til land

Hej Eksperter
Jeg sidder og skal bruge et script der ud fra den besøgenes ip (som skal omdannes til land) bliver sendt til dne side der svare til hans land

Jeg går udfra denne <% =Request.ServerVariables("REMOTE_ADDR") %>
hvordan man så omregner det til landekoder er jo lige det :-)

Er der en der kan det?

Noget i stil med

Skåret ud i pap -
Hvis brugeren er fra danmark "then"
send brugeren til den danske side.....

osv..... med tyske og engelske brugere....
Avatar billede fennec Nybegynder
07. marts 2006 - 13:48 #1
Du kan ikke direkte ud fra IP'en se hvilket land den høre til. Det skal slåes op i en IP liste, men de er ikke 100% rigtige.

Du kan hente en liste her:
http://ip-to-country.webhosting.info/node/view/6
Avatar billede axl_rose Nybegynder
07. marts 2006 - 13:51 #2
Okay, men altså hvordan gør man så altså så skal man finde f.eks den danske del iden csv fil og sætte betingelser i scriptet eller ???
Avatar billede fennec Nybegynder
07. marts 2006 - 14:07 #3
Det bedste er at loade filen ind i en database, da det tager alt for lang tid at søge i en tekstfil. Du kan så lave en søgning i databsen med:
SELECT COUNTRY_NAME FROM <TableName> WHERE IP_FROM <= IPNumber and IP_TO >= IPNumber

Vær opmærksom på at den ikke indeholder IP'erne i deres oprindelige form, men i deres tal form. Du skal altså konvertere aaa.bbb.ccc.ddd til tal med:
IPNumber = aaa x 16777216 + bbb x 65536 + ccc x 256 + ddd
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:11 #4
Jeg tænkte mere på at bygge det om som en if metode altså

if brugerip >= "" & rs("start") AND brugerip <= brugerip then
Response.write "blablabla"


osv....
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:11 #5
DOH!!! ja ipen skal jo have nogle mellemrum, men det kan vel defineres inden If sætningen begyndes eller lign.
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:13 #6
Evt..
if Request.ServerVariables("REMOTE_ADDR") >= ""& rs("start") & "" AND Request.ServerVariables("REMOTE_ADDR") <= ""& rs("slut") & ""  then
Response.redirect ("dk.asp")
end if
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:18 #7
Men kunne du evt. komme med et sample/bud på det vil gerne have det i If fordi brugeren skal sendes på grundlag af hvilket land jo....
Avatar billede fennec Nybegynder
07. marts 2006 - 14:31 #8
Efter det er loaded i databasen, kan du gøre sådan:

IP = split(Request.ServerVariables("REMOTE_ADDR"),".")
IPnr = (ip(0)*16777216) + (ip(1)*65536) + (ip(2)*256) + (ip(3))
set rs = conn.execute("select Land from DinTabel where IP_FROM <= "& IPnr &" and IP_TO >= "& IPnr )
if rs.eof then
  response.write "land ikke fundet"
else
  response.write "landet er "& rs("land")
end if

Hvis du skal redirecte kan du så bare bruge:
  response.redirect(rs("land") &".asp")
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:43 #9
Hvordan sættes der flere lande ind.

Danmark
Tyskland
& England...
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:48 #10
Jeg får denne fejl ved det:
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:50 #11
I denn linie:
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:51 #12
set rs = conn.execute("select lande from lande where IP_FROM <= "& IPnr &" and IP_TO >= "& IPnr )
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:52 #13
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("&&&&&&&&&&&&&&&&")
Conn.Open DSN

IP = split(Request.ServerVariables("REMOTE_ADDR"),".")
IPnr = (ip(0)*16777216) + (ip(1)*65536) + (ip(2)*256) + (ip(3))
set rs = conn.execute("select lande from lande where IP_FROM <= "& IPnr &" and IP_TO >= "& IPnr )
if rs.eof then
  response.write "land ikke fundet"
%>
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:55 #14
<%
else
  response.write "landet er "& rs("lande")
end if
%>
Avatar billede axl_rose Nybegynder
07. marts 2006 - 14:57 #15
Øhm... Det er jo vel ikke servervariablerne remote_addr der skal splittes, men resultatet fra databasen der skal det??
Avatar billede arne_v Ekspert
07. marts 2006 - 14:57 #16
der er en masser faerdigt i http://www.eksperten.dk/artikler/567
Avatar billede fennec Nybegynder
07. marts 2006 - 15:04 #17
axl_rose >>
Det er remote_addr der skal laves om...
Avatar billede krogstrup Nybegynder
07. marts 2006 - 15:46 #18
Den super nemme løsning finder du her:
http://www.ip2location.com

Men den koster også penge :-(
Avatar billede axl_rose Nybegynder
09. maj 2006 - 09:47 #19
Jeg lukker smider i ikke nogle svar!
Avatar billede fennec Nybegynder
09. maj 2006 - 09:58 #20
.o) <-- One Eyed Jack
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
Kurser inden for grundlæggende programmering

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