Maison > développement back-end > tutoriel php > Comment vérifier si une adresse IP appartient à un sous-réseau CIDR ?

Comment vérifier si une adresse IP appartient à un sous-réseau CIDR ?

Linda Hamilton
Libérer: 2024-10-18 19:32:03
original
600 Les gens l'ont consulté

How to Verify if an IP Address Belongs to a CIDR Subnet?

Vérification de l'inclusion IP dans un sous-réseau CIDR

Dans le domaine de la configuration réseau, déterminer si une adresse IP appartient à un sous-réseau CIDR spécifique est une tâche courante. Cet article présente une méthode simple pour y parvenir à l'aide de fonctions intégrées rudimentaires.

Méthode

L'algorithme repose sur la conversion de l'adresse IP et de la plage de sous-réseau CIDR en entiers longs à l'aide de ip2long( ) fonction. Ensuite, le masque de sous-réseau correspondant à la notation /xx dans la plage CIDR est calculé.

La dernière étape consiste à effectuer une opération « et » au niveau du bit entre l'adresse IP et le masque de sous-réseau. Si le résultat correspond au sous-réseau, l'adresse IP fournie peut être confirmée comme résidant dans le sous-réseau spécifié.

Implémentation

Le code ci-dessous fournit une implémentation de l'algorithme susmentionné :

<code class="php">function cidr_match($ip, $range)
{
    list ($subnet, $bits) = explode('/', $range);
    if ($bits === null) {
        $bits = 32;
    }
    $ip = ip2long($ip);
    $subnet = ip2long($subnet);
    $mask = -1 << (32 - $bits);
    $subnet &= $mask; // Adjust subnet alignment if necessary
    return ($ip & $mask) == $subnet;
}</code>
Copier après la connexion

Cette fonction peut être utilisée comme suit :

<code class="php">$ips = array('10.2.1.100', '10.2.1.101', '10.5.1.100', '1.2.3.4');

foreach ($ips as $IP) {
    if (cidr_match($IP, '10.2.0.0/16') == true) {
        print "You're in the 10.2 subnet\n";
    }
}</code>
Copier après la connexion

Ce code affichera :

You're in the 10.2 subnet
You're in the 10.2 subnet
Copier après la connexion

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!

source:php
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal