Maison > développement back-end > tutoriel php > Comment gérer IPv4 et IPv6 en PHP ?

Comment gérer IPv4 et IPv6 en PHP ?

王林
Libérer: 2023-05-24 09:04:01
original
2161 Les gens l'ont consulté

PHP est un langage de développement Web populaire. Il s'agit d'un langage non typé qui peut être utilisé pour gérer une variété de types de données, y compris les adresses IP. Sur Internet, les adresses IP occupent une place très importante à l’ère du numérique. Cependant, PHP ne fournit pas de bibliothèque intégrée pour gérer les adresses IP comme les autres langages de programmation.

Dans cet article, nous explorerons comment gérer les adresses IPv4 et IPv6 en PHP.

Que sont IPv4 et IPv6 ?

IPv4 est actuellement le protocole d'adresse IP le plus utilisé. Il s'agit d'une adresse de 32 bits et peut accueillir un total de 4,2 milliards d'adresses. Cependant, avec le développement rapide d’Internet, IPv4 ne peut plus répondre aux besoins actuels. Parce que les adresses IPv4 ne suffisent plus, les adresses IPv6 apparaissent. Une adresse IPv6 est une adresse de 128 bits pouvant accueillir 2 puissances 128 d'adresses, un nombre suffisant pour répondre à la demande pour les décennies à venir.

Comment gérer IPv4 en PHP ?

Pour les adresses IPv4, PHP fournit une fonction intégrée ip2long() qui peut convertir les adresses IPv4 en entiers 32 bits. Cette fonction accepte une chaîne d'adresse IPv4 comme paramètre et renvoie une valeur entière représentant l'adresse.
Par exemple :

$ip_address = '192.168.1.1';
$ip_long = ip2long($ip_address);
echo $ip_long;
Copier après la connexion

Le résultat sera :

-1062731775
Copier après la connexion

Comme vous pouvez le voir, lors de la conversion de l'adresse IP en un entier, sa valeur est un nombre négatif . En PHP, puisque le type entier signé ne fait que 31 bits, vous devez utiliser un entier non signé ou la fonction long2ip() pour restaurer l'entier dans une chaîne d'adresse IP. Par exemple :

$ip_address = '192.168.1.1';
$ip_long = ip2long($ip_address);
$ip_new = long2ip($ip_long);
echo $ip_new;
Copier après la connexion

Le résultat sera à nouveau :

192.168.1.1
Copier après la connexion

Comment gérer IPv6 en PHP ?

PHP ne fournit pas de fonctions comme ip2long() pour gérer les adresses IPv6. Cependant, d'autres méthodes peuvent être utilisées pour gérer les adresses IPv6. Par exemple, une adresse IPv6 peut être convertie en tableau d'octets en utilisant l'ordre des octets du réseau. L'ordre des octets du réseau est un ordre d'octets standard qui garantit un transfert correct des données entre de nombreuses architectures de processeur différentes.

$ip_address = "2001:db8:85a3:0:0:8a2e:370:7334";
$ip_bin = inet_pton($ip_address);
$ip_hex = bin2hex($ip_bin);
echo $ip_hex;
Copier après la connexion

Le résultat sera :

20010db885a30000008a2e03707334
Copier après la connexion

Ou utilisez l'extension GMP de PHP pour gérer les adresses IPv6 plus facilement. L'extension GMP est une bibliothèque de calcul mathématique fournie par PHP pour traiter de très grands nombres.

$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;
Copier après la connexion

Le résultat sera :

42540766411282592856906245548098208180
Copier après la connexion

Après avoir converti l'adresse IPv6 en nombre décimal, vous pouvez utiliser la fonction long2ip() ou la fonction inet_ntop() pour la restaurer à une chaîne d’adresse IP. Par exemple :

$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;
Copier après la connexion

Le résultat sera :

2001:db8:85a3::8a2e:370:7334
Copier après la connexion

Conclusion

PHP est un langage de développement Web populaire qui peut être utilisé pour gérer les adresses IP. . Pour les adresses IPv4, cela peut être géré à l'aide des fonctions intégrées ip2long() et long2ip() ou à l'aide de la méthode de conversion de données binaires. Pour les adresses IPv6, d'autres méthodes telles que les extensions GMP peuvent être utilisées pour les convertir et les traiter. Choisir la méthode appropriée peut rendre le traitement des adresses IP plus simple et plus rapide, et améliorer l'efficacité du code et du développement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal