Avatar billede hifi4all Nybegynder
17. juli 2007 - 15:57 Der er 5 kommentarer og
1 løsning

Tjek IP-adresser mellem IP-ranges

Jeg forsøger at tjekke om en given ip-adresse er indenfor et bestemt IP-range, men kan ikke helt det til at fungerer:

Noget der kan være behjæpelig?

Kodestump:

<%
Dim AllowedIpFra
Dim AllowedIpTil

AllowedIpRangeFra = "xx.xx.xxx.240"
AllowedIpRangeTi = "xx.xx.xx.255"

If IPAdresse >= AllowedIpRangeFra AND IPAdresse <= AllowedIpRangeTil Then
Response.Redirect("ingen_adgang.asp")
end if
%>

På forhånd tak! :)
Avatar billede hifi4all Nybegynder
17. juli 2007 - 15:59 #1
Ups!

Prøver lige igen ned rettet kode:

<%
Dim AllowedIpRangeFrom
Dim AllowedIpRangeTo

AllowedIpRangeFrom = "xx.xx.xxx.240"
AllowedIpRangeTo = "xx.xx.xxx.255"

If IPAdresse >= AllowedIpRangeFrom AND IPAdresse <= AllowedIpRangeTo Then
Response.Redirect("no_access.asp")
end if
%>
Avatar billede fennec Nybegynder
17. juli 2007 - 16:12 #2
Du skal konvertere dine IP adresser, til et så kaldt IP nummer:

Function Dot2LongIP (ByVal DottedIP)
Dim i, pos
Dim PrevPos, num
  If DottedIP = "" Then
    Dot2LongIP = 0
  Else
    For i = 1 To 4
      pos = InStr(PrevPos + 1, DottedIP, ".", 1)
      If i = 4 Then
        pos = Len(DottedIP) + 1
      End If
      num = Int(Mid(DottedIP, PrevPos + 1, pos - PrevPos - 1))
      PrevPos = pos
      Dot2LongIP = ((num Mod 256) * (256 ^ (4 - i))) + Dot2LongIP
    Next
  End If
End Function

Taget herfra:
http://www.analysespider.com/ip2country/ip_country_faq.html

Det er en kode, der også bliver brugt ved IP2Country systemer.
Avatar billede fennec Nybegynder
17. juli 2007 - 16:19 #3
Så lige det egentlig var en frygtelig funktion. Den kan laves meget kortere, og mere forstålig:

Function Dot2LongIP (ByVal DottedIP)
  DottedIP = split(DottedIP,".")
  Dot2LongIP = (DottedIP(0)*16777216) + (DottedIP(1)*65536) + (DottedIP(2)*256) + (DottedIP(3))
End Function
Avatar billede fennec Nybegynder
17. juli 2007 - 16:21 #4
Fandt også lige et link, hvor de bruge den sidste metode:
http://ip-to-country.webhosting.info/node/view/55
Avatar billede hifi4all Nybegynder
17. juli 2007 - 19:05 #5
Takker for svar - skulle pille lidt, men tror jeg har fundet vejen! :)

Umiddelbart ser det ud til at virke fint på localhost!
Smider du et svar? :)

Den "færdige" kode:

--->
'Konverter ip-adresser
Function Dot2LongIP (ByVal DottedIP)
  DottedIP = split(DottedIP,".")
  Dot2LongIP = (DottedIP(0)*16777216) + (DottedIP(1)*65536) + (DottedIP(2)*256) + (DottedIP(3))
End Function

'********************************************

'Find brugers IP-adressse

'Hvis brugeren ikke benytter en proxy - hent IP-adresse
If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
IPAdresse = Request.ServerVariables("REMOTE_ADDR")
   
'Hvis bruger er bag en multi-proxy, hent kun den først IP-adresse i listen
ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
IPAdresse = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)
       
'Benyt browserens IP-adresse, ikke IP fra proxyserveren
Else
IPAdresse = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
   
'Fjern alle evt. tegn i den endelige IP-adresse
IPAdresse =  removeAllTags(IPAdresse)

'********************************************

'Tjek om ip-adresserne kommer fra (*BEEP*)

Dim AllowedIpRangeFrom
Dim AllowedIpRangeTo
Dim KonvertedIPAdr

AllowedIpRangeFrom = "xx.xx.xxx.240"
AllowedIpRangeTo = "xx.xx.xx.255"

AllowedIpRangeFrom = Dot2LongIP(AllowedIpRangeFrom )
AllowedIpRangeTo = Dot2LongIP(AllowedIpRangeTo)

KonvertedIPAdr = Dot2LongIP(IPAdresse)

If NOT KonvertedIPAdr >= AllowedIpRangeFrom OR NOT KonvertedIPAdr <= AllowedIpRangeTo Then
Response.Redirect("no_access.asp")
end if
<---
Avatar billede fennec Nybegynder
18. juli 2007 - 08:17 #6
.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