18. februar 2004 - 11:50
Der er
2 kommentarer og
1 løsning
beregn gateway / netværk / subnetmask
Hejsa.
hvis jeg angiver et ipnummer som f.eks.
ipnummer: 130.227.30.54/27
vil jeg kunne få følgende ud i variabler
network
gateway
subnetmask
som fra ovenstående eks. er:
network: 130.227.30.32
gateway: 130.227.30.33
subnetmask: 255.255.255.224
Anyone
18. februar 2004 - 11:54
#1
Jeg har en funktion i forvejen. Men den gør det ikke korrekt.
function CalcDefaultGateway($IPaddress, $Subnetmask)
{
$IPaddress_Octets = explode(".", $IPaddress);
$Subnetmask_Octets = explode(".", $Subnetmask);
$Ting_Octets = array();
for ($A = 0; $A <= 3; $A++)
$Ting_Octets[$A] = (int) $IPaddress_Octets[$A] & (int) $Subnetmask_Octets[$A];
$Ting_Octets[3]++;
return implode(".", $Ting_Octets);
}
kaldes med
$ip_gw = CalcDefaultGateway($ip_net, $ip_cid);
hvor ip_net er 130.227.30.54 og ip_cid er 27
Slettet bruger
19. februar 2004 - 08:09
#2
Fejlen er, at du kalder den med den forkerte type netmaske.
Følgende (utestede) kode, kan omregne din netmaske (f.eks. 27) til den anden type (f.eks. 255.255.255.224):
function MaskbitsToOctets($number){
$octets=array();
for ($A = 0; $A <= 3; $A++){
if (8>=$number){
$octets[$A]=255;
$number-=8;
} elseif (0<$number) {
$octets[$A]=bindec(substr(substr("11111111",0,$number)."00000000",0,8));
$number=0;
} else {
$octets[$A]=0;
}
}
return $octets;
}
Hvis du tilføjer denne funktion, skal du bare rette linien:
$Subnetmask_Octets = explode(".", $Subnetmask);
til
$Subnetmask_Octets = MaskbitsToOctets($Subnetmask);