Résolu Sous réseaux

  • Auteur de la discussion ekponou5
  • Date de début

ekponou5

Nouveau membre
#1
Bonsoir tout le monde !! S'il vous plaît j'ai besoin d'aide !! Je veux un code PHP pour calculer les sous réseaux en php
 

mdj de normandie

Grand Maître
#2
Bonjour,
quelques piste de réflexions :
-partir de l'ip passerelle
-se baser sur les masque de sous-réseaux pour paramétrer les boucles "for"
une doc sur les sous réseaux (il y a un tableaux avec tout les masques possibles):
https://fr.wikipedia.org/wiki/Sous-réseau

faut t-il que votre script envoi un ping pour savoir si chaques IP est ocupé sur le réseau ou non ?
 

ekponou5

Nouveau membre
#3
Non....en fait je n'arrive pas à gérer les boucles pour le masque... j'ai réussi à gérer les masques mais ce que je veux en fait c'est la gestion des sous réseaux...
 

mdj de normandie

Grand Maître
#5
Meilleure réponse
Bonjour, j'ai créé ça, es que sa répond a votre problématique ?


PHP:
<?php
/**
 * Classe de calculs pour les sous-reseaux IPv4
 *
 * @author Mdj de Normandie
 */
class sousreseaux {

    /**
     * Liste des masque et des emplacement disponible en fonction du CIDR
     * @var type
     */
    private static $_masques = [
        1 => ["128.0.0.0", 2147483646],
        2 => ["192.0.0.0", 1073741822],
        3 => ["224.0.0.0", 536870910],
        4 => ["240.0.0.0", 268435454],
        5 => ["248.0.0.0", 134217726],
        6 => ["252.0.0.0", 67108862],
        7 => ["254.0.0.0", 33554430],
        8 => ["255.0.0.0", 16777214],
        9 => ["255.128.0.0", 8388606],
        10 => ["255.192.0.0", 4194302],
        11 => ["255.224.0.0", 2097150],
        12 => ["255.240.0.0", 1048574],
        13 => ["255.248.0.0", 524286],
        14 => ["255.252.0.0", 262142],
        15 => ["255.254.0.0", 131070],
        16 => ["255.255.0.0", 65534],
        17 => ["255.255.128.0", 32766],
        18 => ["255.255.192.0", 16382],
        19 => ["255.255.224.0", 8190],
        20 => ["255.255.240.0", 4096],
        21 => ["255.255.248.0", 2046],
        22 => ["255.255.252.0", 1022],
        23 => ["255.255.254.0", 510],
        24 => ["255.255.255.0", 254],
        25 => ["255.255.255.128", 126],
        26 => ["255.255.255.192", 62],
        27 => ["255.255.255.224", 30],
        28 => ["255.255.255.240", 14],
        29 => ["255.255.255.248", 6],
        30 => ["255.255.255.252", 2],
        31 => ["255.255.255.254", 2],
        32 => ["255.255.255.255", 1]
    ];

    /**
     * IP de base
     * @var string IP de base
     */
    private $_baseIP;

    /**
     * CIDR
     * @var int CIDR
     */
    private $_CIDR;

    /**
     * Masque de sous-réseau
     * @var string Masque de sous-réseau
     */
    private $_masque;

    /**
     * Adresse du sous-réseau
     * @var string Adresse du sous-réseau
     */
    private $_passerelle;

    /**
     * Liste des IP du sous-réseau
     * @var array Liste des IP du sous-réseau
     */
    private $_IPList;

    /**
     * Classe de calculs pour les sous-reseaux IPv4
     *
     * @param string $baseIP IP de base
     * @param int $CIDR CIDR
     */
    public function __construct($baseIP, $CIDR) {
        $this->_baseIP = $baseIP;
        $this->_CIDR = $CIDR;
        $this->_masque = self::$_masques[$CIDR][0];
        $this->_passerelle = $this->set_passerelle();
        $this->_IPList = $this->set_IPList();
    }

    /**
     * Retourne l'adresse du sous-réseau
     * @return string Adresse du sous-réseau
     */
    private function set_passerelle() {
        return long2ip(ip2long($this->_baseIP) & ip2long($this->_masque));
    }

    /**
     *  Retourne la liste des IP du sous-réseau
     * @return array Retourne Liste des IP du sous-réseau
     */
    private function set_IPList() {
        $IPList = [];
        if ($this->_CIDR == 32) {
            return [$this->_passerelle];
        }
        if ($this->_CIDR == 31) {
            return [$this->_passerelle, long2ip(ip2long($this->_passerelle) + 1)];
        }
        for ($i = 1; $i <= self::$_masques[$this->_CIDR][1]; $i++) {
            $IPList[] = long2ip(ip2long($this->_passerelle) + $i);
        }
        return $IPList;
    }

    /**
     * IP de base
     * @return string IP de base
     */
    public function get_baseIP() {
        return $this->_baseIP;
    }

    /**
     * CIDR
     * @return int CIDR
     */
    public function get_CIDR() {
        return $this->_CIDR;
    }

    /**
     * Masque de sous-réseau
     * @return string Masque de sous-réseau
     */
    public function get_masque() {
        return $this->_masque;
    }

    /**
     * Adresse du sous-réseau
     * @return string Adresse du sous-réseau
     */
    public function get_passerelle() {
        return $this->_passerelle;
    }

    /**
     * Liste des IP du sous-réseau
     * @return array Liste des IP du sous-réseau
     */
    public function get_IPList() {
        return $this->_IPList;
    }

}
 

ekponou5

Nouveau membre
#6
Bonjour, j'ai créé ça, es que sa répond a votre problématique ?


PHP:
<?php
/**
* Classe de calculs pour les sous-reseaux IPv4
*
* @author Mdj de Normandie
*/
class sousreseaux {

    /**
     * Liste des masque et des emplacement disponible en fonction du CIDR
     * @var type
     */
    private static $_masques = [
        1 => ["128.0.0.0", 2147483646],
        2 => ["192.0.0.0", 1073741822],
        3 => ["224.0.0.0", 536870910],
        4 => ["240.0.0.0", 268435454],
        5 => ["248.0.0.0", 134217726],
        6 => ["252.0.0.0", 67108862],
        7 => ["254.0.0.0", 33554430],
        8 => ["255.0.0.0", 16777214],
        9 => ["255.128.0.0", 8388606],
        10 => ["255.192.0.0", 4194302],
        11 => ["255.224.0.0", 2097150],
        12 => ["255.240.0.0", 1048574],
        13 => ["255.248.0.0", 524286],
        14 => ["255.252.0.0", 262142],
        15 => ["255.254.0.0", 131070],
        16 => ["255.255.0.0", 65534],
        17 => ["255.255.128.0", 32766],
        18 => ["255.255.192.0", 16382],
        19 => ["255.255.224.0", 8190],
        20 => ["255.255.240.0", 4096],
        21 => ["255.255.248.0", 2046],
        22 => ["255.255.252.0", 1022],
        23 => ["255.255.254.0", 510],
        24 => ["255.255.255.0", 254],
        25 => ["255.255.255.128", 126],
        26 => ["255.255.255.192", 62],
        27 => ["255.255.255.224", 30],
        28 => ["255.255.255.240", 14],
        29 => ["255.255.255.248", 6],
        30 => ["255.255.255.252", 2],
        31 => ["255.255.255.254", 2],
        32 => ["255.255.255.255", 1]
    ];

    /**
     * IP de base
     * @var string IP de base
     */
    private $_baseIP;

    /**
     * CIDR
     * @var int CIDR
     */
    private $_CIDR;

    /**
     * Masque de sous-réseau
     * @var string Masque de sous-réseau
     */
    private $_masque;

    /**
     * Adresse du sous-réseau
     * @var string Adresse du sous-réseau
     */
    private $_passerelle;

    /**
     * Liste des IP du sous-réseau
     * @var array Liste des IP du sous-réseau
     */
    private $_IPList;

    /**
     * Classe de calculs pour les sous-reseaux IPv4
     *
     * @param string $baseIP IP de base
     * @param int $CIDR CIDR
     */
    public function __construct($baseIP, $CIDR) {
        $this->_baseIP = $baseIP;
        $this->_CIDR = $CIDR;
        $this->_masque = self::$_masques[$CIDR][0];
        $this->_passerelle = $this->set_passerelle();
        $this->_IPList = $this->set_IPList();
    }

    /**
     * Retourne l'adresse du sous-réseau
     * @return string Adresse du sous-réseau
     */
    private function set_passerelle() {
        return long2ip(ip2long($this->_baseIP) & ip2long($this->_masque));
    }

    /**
     *  Retourne la liste des IP du sous-réseau
     * @return array Retourne Liste des IP du sous-réseau
     */
    private function set_IPList() {
        $IPList = [];
        if ($this->_CIDR == 32) {
            return [$this->_passerelle];
        }
        if ($this->_CIDR == 31) {
            return [$this->_passerelle, long2ip(ip2long($this->_passerelle) + 1)];
        }
        for ($i = 1; $i <= self::$_masques[$this->_CIDR][1]; $i++) {
            $IPList[] = long2ip(ip2long($this->_passerelle) + $i);
        }
        return $IPList;
    }

    /**
     * IP de base
     * @return string IP de base
     */
    public function get_baseIP() {
        return $this->_baseIP;
    }

    /**
     * CIDR
     * @return int CIDR
     */
    public function get_CIDR() {
        return $this->_CIDR;
    }

    /**
     * Masque de sous-réseau
     * @return string Masque de sous-réseau
     */
    public function get_masque() {
        return $this->_masque;
    }

    /**
     * Adresse du sous-réseau
     * @return string Adresse du sous-réseau
     */
    public function get_passerelle() {
        return $this->_passerelle;
    }

    /**
     * Liste des IP du sous-réseau
     * @return array Liste des IP du sous-réseau
     */
    public function get_IPList() {
        return $this->_IPList;
    }

}
Oui Merci
 

ekponou5

Nouveau membre
#7
Bonjour, j'ai créé ça, es que sa répond a votre problématique ?


PHP:
<?php
/**
* Classe de calculs pour les sous-reseaux IPv4
*
* @author Mdj de Normandie
*/
class sousreseaux {

    /**
     * Liste des masque et des emplacement disponible en fonction du CIDR
     * @var type
     */
    private static $_masques = [
        1 => ["128.0.0.0", 2147483646],
        2 => ["192.0.0.0", 1073741822],
        3 => ["224.0.0.0", 536870910],
        4 => ["240.0.0.0", 268435454],
        5 => ["248.0.0.0", 134217726],
        6 => ["252.0.0.0", 67108862],
        7 => ["254.0.0.0", 33554430],
        8 => ["255.0.0.0", 16777214],
        9 => ["255.128.0.0", 8388606],
        10 => ["255.192.0.0", 4194302],
        11 => ["255.224.0.0", 2097150],
        12 => ["255.240.0.0", 1048574],
        13 => ["255.248.0.0", 524286],
        14 => ["255.252.0.0", 262142],
        15 => ["255.254.0.0", 131070],
        16 => ["255.255.0.0", 65534],
        17 => ["255.255.128.0", 32766],
        18 => ["255.255.192.0", 16382],
        19 => ["255.255.224.0", 8190],
        20 => ["255.255.240.0", 4096],
        21 => ["255.255.248.0", 2046],
        22 => ["255.255.252.0", 1022],
        23 => ["255.255.254.0", 510],
        24 => ["255.255.255.0", 254],
        25 => ["255.255.255.128", 126],
        26 => ["255.255.255.192", 62],
        27 => ["255.255.255.224", 30],
        28 => ["255.255.255.240", 14],
        29 => ["255.255.255.248", 6],
        30 => ["255.255.255.252", 2],
        31 => ["255.255.255.254", 2],
        32 => ["255.255.255.255", 1]
    ];

    /**
     * IP de base
     * @var string IP de base
     */
    private $_baseIP;

    /**
     * CIDR
     * @var int CIDR
     */
    private $_CIDR;

    /**
     * Masque de sous-réseau
     * @var string Masque de sous-réseau
     */
    private $_masque;

    /**
     * Adresse du sous-réseau
     * @var string Adresse du sous-réseau
     */
    private $_passerelle;

    /**
     * Liste des IP du sous-réseau
     * @var array Liste des IP du sous-réseau
     */
    private $_IPList;

    /**
     * Classe de calculs pour les sous-reseaux IPv4
     *
     * @param string $baseIP IP de base
     * @param int $CIDR CIDR
     */
    public function __construct($baseIP, $CIDR) {
        $this->_baseIP = $baseIP;
        $this->_CIDR = $CIDR;
        $this->_masque = self::$_masques[$CIDR][0];
        $this->_passerelle = $this->set_passerelle();
        $this->_IPList = $this->set_IPList();
    }

    /**
     * Retourne l'adresse du sous-réseau
     * @return string Adresse du sous-réseau
     */
    private function set_passerelle() {
        return long2ip(ip2long($this->_baseIP) & ip2long($this->_masque));
    }

    /**
     *  Retourne la liste des IP du sous-réseau
     * @return array Retourne Liste des IP du sous-réseau
     */
    private function set_IPList() {
        $IPList = [];
        if ($this->_CIDR == 32) {
            return [$this->_passerelle];
        }
        if ($this->_CIDR == 31) {
            return [$this->_passerelle, long2ip(ip2long($this->_passerelle) + 1)];
        }
        for ($i = 1; $i <= self::$_masques[$this->_CIDR][1]; $i++) {
            $IPList[] = long2ip(ip2long($this->_passerelle) + $i);
        }
        return $IPList;
    }

    /**
     * IP de base
     * @return string IP de base
     */
    public function get_baseIP() {
        return $this->_baseIP;
    }

    /**
     * CIDR
     * @return int CIDR
     */
    public function get_CIDR() {
        return $this->_CIDR;
    }

    /**
     * Masque de sous-réseau
     * @return string Masque de sous-réseau
     */
    public function get_masque() {
        return $this->_masque;
    }

    /**
     * Adresse du sous-réseau
     * @return string Adresse du sous-réseau
     */
    public function get_passerelle() {
        return $this->_passerelle;
    }

    /**
     * Liste des IP du sous-réseau
     * @return array Liste des IP du sous-réseau
     */
    public function get_IPList() {
        return $this->_IPList;
    }

}
Merci beaucoup
 

mdj de normandie

Grand Maître
#8
Un plaisir. pensez a définir la meilleur réponse pour mettre fin au topic.
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Staff en ligne
  • LeeLarant
    Speedy Configales, le plus rapide de tout TH
Membres en ligne
  • LeeLarant
Statistiques globales
Discussions
869 277
Messages
8 106 489
Membres
1 579 806
Dernier membre
stoyk27
Partager cette page
Haut