|
|
Masque de sous réseaux
par _SebF
1 -
Fonction de calcul
de masque de sous réseaux
2 - A propos de
3 - Suivi du développement
3.1 -
Problème restant
3.2 - RoadMap
3.3 -
Suivi du projet
4 - Code source
1 - Fonction de calcul de masque
de sous réseaux
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.
Posez vos questions,
remarques, demande d'évolution et retour d'expérience sur le
Forum dédié aux outils
2 - A propos de
|
Version |
Version 1.2 |
|
Date de création |
03 Février 2004 |
|
Dernière modification |
06 Juillet 2007 |
|
Auteur |
_SebF |
3 - Suivi du
développement
3.1 - Problème restant
3.2 - RoadMap
- Saisir l'adresse de début et de fin
et calculer le masque.
3.3 - Suivi du projet
|
2007.07.06 |
V1.2 |
- Optimisation du code
par Pascal de Serveurperso.com en remplaçant le case par une seule ligne. |
|
2004.02.04 |
V1.1 |
- Addition d'une adresse IP à une constante grâce à la méthode
suivante : Conversion de l'IP (chaîne) en inetaddr grâce à la commande
ip2long(), puis addition de +1 par exemple et retour à la chaîne avec la
fonction inverse long2ip().
- Traitement des cas particulier /31 et 32 pour faire apparaître les bon
résultat (N/A par exemple). |
|
2004.02.03 |
V1.0 |
- Création du formulaire de saisie.
- Création du script basé sur le squelette whois.php.
- Calcul du nombre d'host grâce à $calcul_host=pow(2,32-$calcul_mask)-2;
signifiant 2 Exposant (32-masque), le tout -2 car on retire le réseau et
le broadcast.
- Vérification des champ de saisie. |
4 - Code source
|
<?PHP
// ********************************************
// 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);
// ********************************************
// Conversion du masque
// ********************************************
// Optimisation fournit par Pascal de Serveurperso.com
$calcul_chaine_mask = (string) long2ip(256*256*256*256 - pow(2, 32 - $calcul_mask));
// ********************************************
// 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> </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"> </td>
<td> </td>
</tr>
<tr>
<td width="50%"
align="right"><b>Les résultats</b></td>
<td> </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);
}
?> |
|
|