PHP: Belirli bir IP aralığında IP girişini tespit

3 Cevap php

Ben bir IP belirli bir IP aralığında gider belirler PHP işlevi var, ama ben IP'nin ağ ve maskesini bulmak için nasıl bilmiyorum. Herkes bu konuda yardımcı olabilir?

<?
// Example of calling and checking IP-address 192.168.0.4
// belonging to a network 192.168.0.0 with mask 255.255.255.248

if(ip_vs_net("192.168.0.4","192.168.0.0","255.255.255.248")){
print "Address belongs to a netwok<BR>";
} else {
print "Address is out of subnetwork's range<BR>";
}

function ip_vs_net($ip,$network,$mask){
if(((ip2long($ip))&(ip2long($mask)))==ip2long($network)){
return 1;
} else {
return 0;
}
}
?>

3 Cevap

IP adresi (Sınıf A, B, C vb) klas iken, o adres aralıklarına göre sabit çünkü alt ağ maskesini bulmak kolay oldu.

Herhangi bitişik önek alt ağ maskesi olarak kullanılabilir çünkü Şimdi CIDR ile bu kesin alt ağ maskesini bilmek imkansız.

Ancak, şık alt durum için işe yarayabilecek. Bu kesinlikle yoktan iyidir. Bu fonksiyonu kullanarak alt ağ maskesini anlamaya,

function get_net_mask($ip) {
   if (is_string($ip)) {
      $ip = ip2long($ip);
   }
   if (($ip & 0x80000000) == 0) {
       $mask = 0xFF000000;
   } elseif (($ip & 0xC0000000) == (int)0x80000000) {
       $mask = 0xFFFF0000;
   } elseif (($ip & 0xE0000000) == (int)0xC0000000) {
       $mask = 0xFFFFFF00;
   } else {
       $mask = 0xFFFFFFFF;
   }
   return $mask;
}

Sadece IP tabanlı maske bulamıyor. Sen, aynı IP 32ish alt ağların ne alt ağ veya bir şey var olabilir bilmek gerekir.

Tür, ama gerçekten değil. Gerçekten bakım veya dış ağ ağ maskesi veya ağ umurumda zorunda asla.

Bir ağa iç ve bir DHCP sunucusu varsa Ancak, iç (yerel) ağ ayarlarını almak için DHCP protokolü üzerinden sorgulayabilirsiniz. Eğer bir LAN iseniz, aynı zamanda ağ cihazları ile iletişim kurmak için RIP protokolü gibi bir şey kullanmak mümkün olabilir. Sana nmap falan kullanarak port tarama çeşit daha fazla ilgi ve .. durumda fuh ... ağ gerçekten ilgilenmiyor ancak tahmin ediyorum :)