07. maj 2003 - 22:28Der er
25 kommentarer og 1 løsning
Kan dette lade sig gøre?
Heysa... Jeg er i gang med et website, som er på dansk, norsk, og svensk! Men jeg vil kun have besøg fra Danmark, Norge og Sverige! Hvordan kan man gøre det, hvis man da kan? Der må være et script som sorterer alle andre IP-adresser fra..? Men det skal selvfølgelig være sådan at alle i Danmark, Norge og Sverige SKAL kunne komme ind! Håber i kan hjælpe.... :D
Du kan ikke rigtigt sortere ordentligt ud fra IP-adresser længere, da de efterhånden er spredt ud over hele verden, og ikke længere samlet i regionale klumber som i de gode gamle dage...
Så hvis du forsøger at implementere det, vil du helt sikkert lukke nogen ude, som burde ha' adgang.
Men teoretisk set, jo, det kan godt lade sig gøre, at sortere en hel liste ip'er fra...
Lytter lige med fra sidelinien:) I så fald, hvor findes sådanne ip-oversigter??
Nu er jeg rent teknisk ikke så meget inde i hardware, men er der ikke netkort der får tildelt IP automatisk fra en server. Altså ikke køre på en fast ip, men derimod tildeles en ledig IP af de som serveren har "råderet" over?
ip = Request.ServerVariables("REMOTE_ADDR") if ip = "1.2.3.4" Then Response.Write "Din ip er bannet fra denne side!" else ' vis siden end if
Det her er et ganske simpelt script, til at checke for enkelte ip-adresser. Det bedste ville være at knalde alle de ip'er du vil sortere fra (eller dem du vil tillade - hvad der nu er mindst af) i en database, og så lave et udtræk og pløje igennem...
Det ville komme til at se nogenlunde sådan ud (jeg går ud fra du allerede kender til at åbne for databaser og recordsets)
ip = Request.ServerVariables("REMOTE_ADDR") while not rs.eof if ip = rs("ip") Then response.Write "Din ip er bannet fra denne side!" else ' vis siden end if rs.movenext wend
Jeg ved ikke hvor man kan finde ip-oversigterne henne, men hvis det lykkedes at finde nogen, er de sikkert ikke ret brugbare længere. I gamle dage mener jeg at danmark havde fået tildelt en stavl adresser der startede med 195, men idag er det område for længst brugt, og vi er begyndt at overtage andre områder, hvor der nu var plads.
Mht. staf's spørgsmål, så er de ip'er du checker på, ikke dem du får tildelt fra serveren (hvis du tænker på et internt netværk) - det er de eksterne ip'er. De kan dog rigtigt nok også tildeles fra en server af, dynamisk (f.eks. ved opkaldsforbindelser) mens flere og flere adsl'er kører med fast ip.
Select case myLng case "da" Response.Write "Denne bruger har en dansk browser" case "no" Response.Write "Denne bruger har en Norsk browser" case else Response.Write "Ha! Du må ikke komme ind!" End select
Der findes dog en anden mulighed, hvis du er rigtigt stærk i programmering:
Lav en webservice i C# (Eller lign.), som automatisk poster en IP-request hos RIPE.NET, og aflæs country-koden via en httpResponse. Sådan finder du med sikkerhed ud af hvilket land brugeren kommer fra!
> Thomas Regin Jeg er total skod til at programmere... Men er der en som kan lave en kode i asp jeg kan sætte direkte ind? Så ville jeg blive over lykkelig :D
Okay.. Så benyt mit eksempel ovenfor! Den er ikke 100% idiot-sikret, men jeg gætter på, at omkring 99% af alle danskere kører med danske settings i deres Windows:
Derfor indtast følgende i dit "login-script":
Select case Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") Case "da" Response.Redirect("userok.asp?lng=da") Case "no" Response.Redirect("userok.asp?lng=no") Case "se" Response.Redirect("userok.asp?lng=se") Case else Response.Write "Du har desværre ikke adgang til denne service" Response.End End Select
Jeg er ikke HELT sikker på "no" og "se", men giv mig 2 sekunder, så skal jeg finde ud af, hvad deres HTTP_ACCEPT_LANGUAGE-variabel hedder!
Åbn dit kontrol panel og dit "Locale settings" (Husker ikke det danske navn), og vælg "Sverige" i din "location".. Derefter kan du se, hvad der står i browseren, når du requester HTTP_ACCEPT_LANGUAGE
Ok.. Jeg har testet det og det virker fint! Meeen... Er det muligt at gäre sådan at dem der ikke har "dk" "no" "sv" bliver smidt over på en anden side?
Select case Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") Case "da" Response.Redirect("userok.asp?lng=da") Case "no" Response.Redirect("userok.asp?lng=no") Case "se" Response.Redirect("userok.asp?lng=se") Case else Response.Redirect("http://www.disney.com") End Select
Lige et sidste spørgsmål :D Hvordan ser koden ud, hvis det er at folk fra Norge, Danmark og sverige skal blive på siden. Og alle andre sendes til disney.com?
Select case Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") Case "da" Response.Write "Vi bliver på siden" Case "no" Response.Write "Vi blir på siden" Case "se" Response.Write "Vi stannar på sidan" Case else Response.Redirect("http://www.disney.com") End Select
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.