Ankündigung

Einklappen
Keine Ankündigung bisher.

IP-Adressen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IP-Adressen

    Der falsche Weg
    Verwenden Sie nicht ip2long oder long2ip. ip2long wandelt eine IPv4-Adresse in einer für Menschen lesbaren integer-Darstellung. Auf 32-Bit-Plattformen, kann das vorzeitig mit dem Wert der PHP_MAX_INT als Obergrenze enden, wenn die angegebene IP-Adresse Darstellung höher als die PHP_MAX_INT ist. Dies wird definitiv passieren wenn das erste Segment der IP-Adresse höher als 127 ist.
    Das stimmt so nicht ganz.
    ip2long() behandelt IPv4-Adressen auch auf 32-Bit-Plattformen korrekt. Bei Startsegmenten > 127 gibt PHP dies auf 32-Bit-Systemen nur als negative Zahl aus, da es kein Unsigned Integer kennt. Intern ist die Darstellung korrekt. Auch die Rücktransformation long2ip() mit negativen Zahlen klappt.

    PHP-Code:
    debug::write(
      
    PHP_INT_SIZE,
      
    ip2long("255.255.255.255")
    );
    /*
    0    integer     4 [00000004h] 
    1    integer    -1 [FFFFFFFFh]
    */ 
    Mein Vorschlag: Einfach weglassen oder nur darauf verweisen, das ip2long und long2ip nur für IPv4-Adressen geeignet ist, inet_pton() dagegen auch für IPv6.
    PHP-Klassen auf github

Lädt...
X