Wie gehe ich mit IPv4 und IPv6 in PHP um?

王林
Freigeben: 2023-05-24 09:04:01
Original
2093 Leute haben es durchsucht

PHP ist eine beliebte Webentwicklungssprache. Sie ist eine untypisierte Sprache und kann für die Verarbeitung einer Vielzahl von Datentypen, einschließlich IP-Adressen, verwendet werden. Im Internet nehmen IP-Adressen im digitalen Zeitalter eine sehr wichtige Stellung ein. PHP bietet jedoch keine integrierte Bibliothek für den Umgang mit IP-Adressen wie andere Programmiersprachen.

In diesem Artikel erfahren Sie, wie Sie mit IPv4- und IPv6-Adressen in PHP umgehen.

Was sind IPv4 und IPv6?

IPv4 ist derzeit das am weitesten verbreitete IP-Adressprotokoll. Es handelt sich um eine 32-Bit-Adresse und kann insgesamt 4,2 Milliarden Adressen aufnehmen. Aufgrund der rasanten Entwicklung des Internets kann IPv4 den aktuellen Anforderungen jedoch nicht mehr gerecht werden. Da IPv4-Adressen nicht mehr ausreichen, erscheinen IPv6-Adressen. Eine IPv6-Adresse ist eine 128-Bit-Adresse, die 2 bis 128 Adressen aufnehmen kann, eine Zahl, die ausreicht, um den Bedarf für die kommenden Jahrzehnte zu decken.

Wie gehe ich mit IPv4 in PHP um?

Für IPv4-Adressen bietet PHP eine integrierte Funktion ip2long(), die IPv4-Adressen in 32-Bit-Ganzzahlen umwandeln kann. Diese Funktion akzeptiert eine IPv4-Adresszeichenfolge als Parameter und gibt einen ganzzahligen Wert zurück, der die Adresse darstellt.
Zum Beispiel:

$ip_address = '192.168.1.1';
$ip_long = ip2long($ip_address);
echo $ip_long;
Nach dem Login kopieren

Die Ausgabe lautet:

-1062731775
Nach dem Login kopieren

Wie Sie sehen können, ist der Wert der IP-Adresse bei der Konvertierung in eine Ganzzahl negativ. Da in PHP der vorzeichenbehaftete Ganzzahltyp nur 31 Bit umfasst, müssen Sie eine vorzeichenlose Ganzzahl oder die Funktion long2ip() verwenden, um die Ganzzahl in eine IP-Adresszeichenfolge wiederherzustellen. Zum Beispiel:

$ip_address = '192.168.1.1';
$ip_long = ip2long($ip_address);
$ip_new = long2ip($ip_long);
echo $ip_new;
Nach dem Login kopieren

Die Ausgabe lautet wieder:

192.168.1.1
Nach dem Login kopieren

Wie gehe ich mit IPv6 in PHP um?

PHP bietet keine Funktionen wie ip2long() zur Verarbeitung von IPv6-Adressen. Es können jedoch auch andere Methoden zum Umgang mit IPv6-Adressen verwendet werden. Beispielsweise kann eine IPv6-Adresse mithilfe der Netzwerk-Byte-Reihenfolge in ein Byte-Array umgewandelt werden. Die Netzwerk-Byte-Reihenfolge ist eine Standard-Byte-Reihenfolge, die eine korrekte Datenübertragung zwischen vielen verschiedenen CPU-Architekturen gewährleistet.

$ip_address = "2001:db8:85a3:0:0:8a2e:370:7334";
$ip_bin = inet_pton($ip_address);
$ip_hex = bin2hex($ip_bin);
echo $ip_hex;
Nach dem Login kopieren

Die Ausgabe lautet:

20010db885a30000008a2e03707334
Nach dem Login kopieren

Oder verwenden Sie die GMP-Erweiterung für PHP, um IPv6-Adressen bequemer zu verarbeiten. Die GMP-Erweiterung ist eine von PHP bereitgestellte mathematische Berechnungsbibliothek zur Verarbeitung sehr großer Zahlen.

$ip_address = '2001:db8:85a3:0:0:8a2e:370:7334';
$bin = inet_pton($ip_address);
$hex = bin2hex($bin);
$dec = gmp_strval(gmp_init($hex, 16), 10);
echo $dec;
Nach dem Login kopieren

Die Ausgabe lautet:

42540766411282592856906245548098208180
Nach dem Login kopieren

Nach der Konvertierung der IPv6-Adresse in eine Dezimalzahl können Sie die Funktion long2ip() oder die Funktion inet_ntop() verwenden, um sie in eine IP-Adresszeichenfolge wiederherzustellen. Zum Beispiel:

$ip_address = '2001:db8:85a3:0:0:8a2e:370:7334';
$bin = inet_pton($ip_address);
$hex = bin2hex($bin);
$dec = gmp_strval(gmp_init($hex, 16), 10);
$ip_new = inet_ntop($bin);
echo $ip_new;
Nach dem Login kopieren

Die Ausgabe lautet:

2001:db8:85a3::8a2e:370:7334
Nach dem Login kopieren

Fazit

PHP ist eine beliebte Webentwicklungssprache, die für den Umgang mit IP-Adressen verwendet werden kann. Für IPv4-Adressen kann dies mit den integrierten Funktionen ip2long() und long2ip() oder mit der binären Datenkonvertierungsmethode erledigt werden. Für IPv6-Adressen können andere Methoden wie GMP-Erweiterungen zur Konvertierung und Verarbeitung verwendet werden. Die Wahl der geeigneten Methode kann die Verarbeitung von IP-Adressen einfacher und schneller machen und die Code- und Entwicklungseffizienz verbessern.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit IPv4 und IPv6 in PHP um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!