Avatar billede bigo Nybegynder
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
Avatar billede bigo Nybegynder
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
Avatar billede 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);
Avatar billede bigo Nybegynder
19. februar 2004 - 09:14 #3
takker mange gange
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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