PHP: Jämföra IP adresser med wildcards.

Avdelningen för webbrelaterad programmering och grafisk design.
Post Reply
User avatar
Laban
Posts: 36
Joined: 2002-03-13 22:22:13
Location: Skogen
Contact:

PHP: Jämföra IP adresser med wildcards.

Post by Laban »

Är det någon som sitter och ruvar på ett script för att jämföra IP adresser med wildcards?

Exempel; Jag har 192.168.*.* och 172.16.0.4 i listan. Då när jag kommer med 192.168.45.68 så returnerar den TRUE. 194.2.51.3 returnerar FALSE etc. Förstår du/ni?
!ERAU QSSI DLRO WEHT
User avatar
IcePic
Hedersbit
Posts: 6061
Joined: 2002-03-08 16:09:38

Re: PHP: Jämföra IP adresser med wildcards.

Post by IcePic »

Laban wrote:Är det någon som sitter och ruvar på ett script för att jämföra IP adresser med wildcards?

Exempel; Jag har 192.168.*.* och 172.16.0.4 i listan. Då när jag kommer med 192.168.45.68 så returnerar den TRUE. 194.2.51.3 returnerar FALSE etc. Förstår du/ni?
Det alla routrar och firewalls gör är ju att inte lagra med wildcards utan med
ip+nätmask, t.ex 192.168.0.0/16 (dvs de sista 16 bitarna kan variera, motsvarar
192.168.*.* i ditt fall) och 172.30.0.0/23 vilket motsvarar 172.30.0.0 -> 172.31.255.255 som du inte kan representera med wildcards annat än om du
har RIKTIGT kreativa wildcards som 172.3[01].*.* eller liknande.

Hursomhelst, genom att ta med nätmasken kan du använda samma metod som
routrarna gör. De gör om ip-nummret och nätmasken till binärt,

Code: Select all

IP: 101000101.1010001.11010010.10100101  <-påhittad ip
NM: 111111111.1111111.00000000.00000000  <- nätmasken /16
sen gör man logisk AND på ip och mask och får ett "nät", sedan gör man
AND mellan fråge-ip:t och nätmasken och får ett till "nät"-nummer. Om
dessa två nätnummer är samma så ingår fråge-ip:t i det nät du definierat
som "ok", annars inte. Det är den "korrekta" metoden att göra det på.
Oh give me a clone, my very own clone,
with the Y chromosome changed to X!
And since she's my own, of my own flesh and bone,
she'll be thinking of nothing but sex!
Post Reply