Calcul de sous reseaux - masque - adressage ip

Soyez le premier à donner votre avis sur cette source.

Vue 72 792 fois - Téléchargée 1 350 fois

Description

Cette outil vous permettra de calculer, en fonction du masque de sous réseaux de votre choix, la plage IP disponible. L'outil vous indiquera en plus, la première adresse disponible ainsi que la dernière.

Une démo du code est disponnible à l'adresse suivante :
http://www.frameip.com/masque/

----------------------
http://www.frameip.com
Pour ceux qui aiment TCPIP
----------------------

Source / Exemple :


<?

// ********************************************
// Affichage de l'entete html
// ********************************************
echo
    '
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

    <html>

    <head>

    <LINK REL="StyleSheet" HREF="../style.css" TYPE="text/css">

    <title>FrameIP, Pour ceux qui aiment IP - Script Masque</title>

    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <META NAME="AUTHOR" CONTENT="www.frameip.com">
    <META NAME="COPYRIGHT" CONTENT="Copyright (c) 2003 by framip">
    <META NAME="KEYWORDS" CONTENT="masque, ip, classe, A, B, C, D, E, 255, 0, 128, bits, binaire, routeur, wan, reseaux, lan, comaraison, adresse, segment, convertion, hote, passerelle, route, calcul, sousreseau">
    <META NAME="DESCRIPTION" CONTENT="Frameip, pour ceux qui aiment IP - Script Masque">
    <META NAME="ROBOTS" CONTENT="INDEX, FOLLOW">
    <META NAME="REVISIT-AFTER" CONTENT="1 DAYS">
    <META NAME="RATING" CONTENT="GENERAL">
    <META NAME="GENERATOR" CONTENT="powered by frameip.com - webmaster@frameip.com">

    </head>

    <body>
    ';

// ********************************************
// Initiation des variables
// ********************************************
$calcul_adresse_ip=$_POST['IP'];
$calcul_mask=$_POST['MASK'];

// **********************************************
// Récupération de la date et heure
// **********************************************
$annee=date("Y");
$mois=date("m");
$jour=date("d");
$heure=date("H");
$minute=date("i");
$seconde=date("s");

// **********************************************
// Récupération de l'IP cliente
// **********************************************
$ip_client=getenv("REMOTE_ADDR");

// **********************************************
// Récupération du Ptr de l'IP cliente
// **********************************************
$ptr=gethostbyaddr("$ip_client");
if ($ptr==$ip_client)
$ptr="Pas de ptr";

// **********************************************
// Récupération du port TCP source
// **********************************************
$port_source=getenv("REMOTE_PORT");

// **********************************************
// Récupération de l'IP du browser
// **********************************************
$ip_browser=getenv("HTTP_X_FORWARDED_FOR");

// ********************************************
// Validation du champs IP
// ********************************************
$calcul_inetaddr=ip2long($calcul_adresse_ip);
$calcul_adresse_ip=long2ip($calcul_inetaddr);

// ********************************************
// Vérification de la saisie
// ********************************************
$erreur=0; // Initialisation
if (($calcul_inetaddr==0)||($calcul_inetaddr==-1))
    masque_erreur(1);
if (($calcul_mask<1)||($calcul_mask>32))
    masque_erreur(2);

// ********************************************
// Convertion du masque
// ********************************************
switch ($calcul_mask)
    {
    case 1:
        $calcul_chaine_mask="128.0.0.0";
    break;

    case 2:
        $calcul_chaine_mask="192.0.0.0";
    break;

    case 3:
        $calcul_chaine_mask="224.0.0.0";
    break;

    case 4:
        $calcul_chaine_mask="240.0.0.0";
    break;

    case 5:
        $calcul_chaine_mask="248.0.0.0";
    break;

    case 6:
        $calcul_chaine_mask="252.0.0.0";
    break;

    case 7:
        $calcul_chaine_mask="254.0.0.0";
    break;

    case 8:
        $calcul_chaine_mask="255.0.0.0";
    break;

    case 9:
        $calcul_chaine_mask="255.128.0.0";
    break;

    case 10:
        $calcul_chaine_mask="255.192.0.0";
    break;

    case 11:
        $calcul_chaine_mask="255.224.0.0";
    break;

    case 12:
        $calcul_chaine_mask="255.240.0.0";
    break;

    case 13:
        $calcul_chaine_mask="255.248.0.0";
    break;

    case 14:
        $calcul_chaine_mask="255.252.0.0";
    break;

    case 15:
        $calcul_chaine_mask="255.254.0.0";
    break;

    case 16:
        $calcul_chaine_mask="255.255.0.0";
    break;

    case 17:
        $calcul_chaine_mask="255.255.128.0";
    break;

    case 18:
        $calcul_chaine_mask="255.255.192.0";
    break;

    case 19:
        $calcul_chaine_mask="255.255.224.0";
    break;

    case 20:
        $calcul_chaine_mask="255.255.240.0";
    break;

    case 21:
        $calcul_chaine_mask="255.255.248.0";
    break;

    case 22:
        $calcul_chaine_mask="255.255.252.0";
    break;

    case 23:
        $calcul_chaine_mask="255.255.254.0";
    break;

    case 24:
        $calcul_chaine_mask="255.255.255.0";
    break;

    case 25:
        $calcul_chaine_mask="255.255.255.128";
    break;

    case 26:
        $calcul_chaine_mask="255.255.255.192";
    break;

    case 27:
        $calcul_chaine_mask="255.255.255.224";
    break;

    case 28:
        $calcul_chaine_mask="255.255.255.240";
    break;

    case 29:
        $calcul_chaine_mask="255.255.255.248";
    break;

    case 30:
        $calcul_chaine_mask="255.255.255.252";
    break;

    case 31:
        $calcul_chaine_mask="255.255.255.254";
    break;

    case 32:
        $calcul_chaine_mask="255.255.255.255";
    break;

   default :
        $calcul_chaine_mask="255.255.255.255";
    break;
    }

// ********************************************
// Calcul du nombre de HOST
// ********************************************
if ($calcul_mask==32)
    $calcul_host=1;
else
    $calcul_host=pow(2,32-$calcul_mask)-2;

// ********************************************
// Calcul de la route
// ********************************************
$calcul_route=$calcul_inetaddr&ip2long($calcul_chaine_mask); // Ajoute l'IP et le masque en binaire
$calcul_route=long2ip($calcul_route); // Convertit l'adresse inetaddr en IP

// ********************************************
// Calcul de la premiere adresse
// ********************************************
if ($calcul_mask==32)
    $offset=0;
else
    $offset=1;

if ($calcul_mask==31)
    $calcul_premiere_ip="N/A";
else
    {
    $calcul_premiere_ip=ip2long($calcul_route)+$offset;
    $calcul_premiere_ip=long2ip($calcul_premiere_ip);
    }

// ********************************************
// Calcul de la dernière adresse
// ********************************************
if ($calcul_mask==32)
    $offset=-1;
else
    $offset=0;

if ($calcul_mask==31)
    $calcul_derniere_ip="N/A";
else
    {
    $calcul_derniere_ip=ip2long($calcul_route)+$calcul_host+$offset;
    $calcul_derniere_ip=long2ip($calcul_derniere_ip);
    }

// ********************************************
// Calcul du broadcast
// ********************************************
if ($calcul_mask==32)
    $offset=0;
else
    $offset=1;
$calcul_broadcast=ip2long($calcul_route)+$calcul_host+$offset;
$calcul_broadcast=long2ip($calcul_broadcast);

// ********************************************
// Présentation des résultats
// ********************************************
echo '
    <p align="center">
        <font size="4" color="#008000">
            <b>
                Masque de sous réseaux
            </b>
        </font>
    </p>
    ';

echo '
    <table border="0" width="100%" id="table1">
        <tr>
            <td width="50%" align="right"><b>Les saisies</b></td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td width="50%" align="right">Adresse IP :</td>
            <td>'.$calcul_adresse_ip.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Masque de sous réseau :</td>
            <td>'.$calcul_mask.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">&nbsp;</td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td width="50%" align="right"><b>Les résultats</b></td>
            <td>&nbsp;</td>
        </tr>
        <tr>
            <td width="50%" align="right">Masque de sous réseau :</td>
            <td>'.$calcul_chaine_mask.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Nombre maximum d\'hôte :</td>
            <td>'.$calcul_host.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">L\'adresse de réseau (La route) :</td>
            <td>'.$calcul_route.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Première adresse d\'hôte :</td>
            <td>'.$calcul_premiere_ip.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Dernière adresse d\'hôte :</td>
            <td>'.$calcul_derniere_ip.'</td>
        </tr>
        <tr>
            <td width="50%" align="right">Adresse de broadcast :</td>
            <td>'.$calcul_broadcast.'</td>
        </tr>
    </table>
    ';

// ********************************************
// Fin du script général
// ********************************************
fin_du_script();

// ********************************************
// Fonction d'affichage de l'erreur de saisie
// ********************************************
function masque_erreur($erreur) // $erreur représente le numéro d'erreur.
    {
    // ********************************************
    // Affichage de titre d'erreur
    // ********************************************
    echo
        '
        <p align="center">
            <b>
                <font size="5" color="#008000">
                    Erreur
                </font>
            </b>
        </p>
    ';
    echo "<BR>";

    // ********************************************
    // Message personnalisé
    // ********************************************
    switch ($erreur)
        {
        case 1:
            echo'Le calcul ne peux pas avoir lieu car le champ IP est vide ou non valide.';
        break;
        case 2:
            echo'Le calcul ne peux pas avoir lieu car le champ MASK est vide ou non valide.';
        break;
        }

    // ********************************************
    // Fin du script général
    // ********************************************
    fin_du_script();
    }

function fin_du_script()
    {
    // ********************************************
    // Affiche de l'Url
    // ********************************************
    echo '
        <p align="right">
            <a target="_blank" href="http://www.frameip.com">
                www.frameip.com
            </a>
        </p>
        ';

    // ********************************************
    // Fin de la page Html
    // ********************************************
    echo
        '
        </body>

        </html>
        ';

    // ********************************************
    // Fin du script général
    // ********************************************
    exit(0);
    }
?>

Conclusion :


Une démo du code est disponnible à l'adresse suivante :
http://www.frameip.com/masque/

----------------------
http://www.frameip.com
Pour ceux qui aiment TCPIP
----------------------

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

grosteack
Messages postés
25
Date d'inscription
mercredi 28 avril 2004
Statut
Membre
Dernière intervention
17 août 2006
-
Tu aurais gagné plus de temps en convertissant en binaire, ca t'aurait évité les switch à rallonge !
neojet
Messages postés
7
Date d'inscription
mercredi 5 mai 2004
Statut
Membre
Dernière intervention
24 août 2006
-
Moi, aussi, je vais un peu plus me pencher sur ton code car il y a quelques trucs que je n'ai pas saisi au premier abord comme la valeur d'offset.
tkof
Messages postés
36
Date d'inscription
vendredi 10 mars 2006
Statut
Membre
Dernière intervention
31 janvier 2012
-
Jsuis en BTS info !
Voila qui va me faire gagner du temps !!
(trop la fleme de calculer ça a la main :o)

Merci à toi !
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
Ton site est excellent, vient de lire qq pages dessus, j'adore ^^

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.