Calculatrice IP.
Réponse AJAX

Objectif de l'atelier.

Une calculatrice IP est un outil régulièrement utilisé par les administrateurs réseau. Elle donne, à partir d'une adresse IP et de son masque :

C'est ce que nous allons développer ici, en HTML/PHP.

Remarque : cet atelier utilise plutôt des traitements par chaînes de caractères, plutôt que par des valeurs numériques et des "et arithmétiques " (&).

Création du formulaire HTML

Dans le répertoire Web d'un serveur Internet (par exemple : c:\wamp\www\calculatrice_ip\), créez un fichier calculatrice_ip.php.

Dans ce fichier, créez le formulaire HTML suivant :

Nommez les champs form_octet1, ..., form_octet4, form_taille_masque.

Collez ici le code HTML de cette étape :

Votre réponse n°1

Amélioration possible.

Faites les tests nécessaires en Javascript pour vérifier que chaque octet saisi a bien une valeur entre 0 et 255, et que la taille du masque (en notation CIDR) est bien comprise entre 1 et 30, avant de soumettre le formulaire au serveur.

Amélioration possible.

Lorsqu'on a validé le formulaire, y réafficher les valeurs saisies par l'utilisateur (grâce à PHP) :

Traitement du formulaire

A la suite du formulaire, ajouter le test qui permet de quitter la page si le formulaire n'est pas validé. Attention : on était en HTML, maintenant c'est du PHP. N'oubliez pas les balises adéquates, et utilisez :

Pour améliorer la lisibilité du code PHP, transférez vos variables $_GET dans des variables plus courtes :

Affichage de la classe de l'adresse saisie

En testant la valeur du premier octet de l'adresse, affichez la classe (et stockez-la dans une variable $classe).

Collez ici le bout de code PHP correspondant à cette étape :

Votre réponse n°2

Affichage du type public/privé

Méthode :
1. Supposez que l'adresse est publique : $public = true;
2. Faites la série de test (un test par classe) qui positionne $public à false si nécessaire.
3. Affichez.

Collez ici le bout de code PHP correspondant à cette étape :

Votre réponse n°3

Adresse du sous-réseau

Pour calculer l'adresse du sous-réseau, il faut mettre tous les bits de la partie hôte à zéro.

La méthode utilisée va être la suivante :

  1. La situation initiale : on a les quatre octets (par exemple : $o1=172, $o2=18, $o3=22, $o4=70, $taille_masque = 22)
  2. Convertir chacun des 4 octets en binaire grâce à la fonction decbin (résultat : $b1='10101100', $b2='10010', $b3='10110', $b4='1000110').
  3. Complétez avec des zéros à gauche grâce à la fonction str_pad (résultat : $b1='10101100', $b2='00010010', $b3='00010110', $b4='01000110').
  4. Concaténez les 4 octets dans une seule variable (résultat : $b = '10101100000100100001011001000110').
  5. Prenez la partie gauche ($taille_masque caractères) de $b grâce à la fonction substr (résultat : $b = '1010110000010010000101').
  6. Complétez $b à droite avec des zéros grâce à la fonction str_pad (résultat : $b = '10101100000100100001010000000000').
  7. Récupérez le résultat par paquet de 8 bits dans $rb1, $rb2, $rb3 et $rb4 grâce à la fonction substr (résultat : $rb1='10101100', $rb2='00010010', $rb3='00010100', $rb4='00000000').
  8. Affichez cette adresse de réseau en binaire : 10101100.00010010.00010100.00000000
  9. Calculez chaque octet en décimal grâce à la fonction de conversion bindec (résultat : $r1=172, $r2=18, $r3=20, $r4=0)
  10. Affichez le résultat en décimal : 172.18.20.0

Collez ici le bout de code PHP correspondant à cette étape :

Votre réponse n°4

Nombre de machines adressables dans ce sous-réseau

Sachant que l'adresse du réseau est stockée sur $taille_masque bits, calculez le nombre de bits utilisés pour stocker l'adresse des hôtes ($taille_hôtes).

Grâce à la fonction pow, calculer puis affichez le nombre d'hôtes possibles : 2$taille_hôtes - 2.

Collez ici le bout de code PHP correspondant à cette étape :

Votre réponse n°5

Adresses de la première et de la dernière machine du réseau, et l'adresse de broadcast

L'adresse de la première machine est égale à l'adresse du réseau plus un. Calculez-le puis affichez-le.

Pour l'adresse de broadcast, reprenez à partir de l'étape 5.6, mais complétez à droite avec des 1 (et non pas avec des zéros). Affichez.

Pour l'adresse de la dernière machine, retranchez un à l'adresse de broadcast.

Collez ici le bout de code PHP correspondant à cette étape :

Votre réponse n°6

Nombre de sous-réseaux possibles

Au lycée, on a un masque de 22 bits (1111 1111 . 1111 1111 . 1111 1100 . 0000 0000) :

La méthode est la suivante :

Certaines calculatrices affichent, pour chacun des sous-réseaux possibles : l'adresse du sous-réseau, l'adresse de la première et de la dernière machine.

Collez ici le bout de code PHP correspondant à cette étape :

Votre réponse n°7

Améliorations facultatives

Affichez en binaire les adresses saisies, du premier hôte, du dernier hôte, de broadcast. Pour faciliter ce travail, créez une fonction affiche_binaire($o1, $o2, $o3, $o4) qui reçoit quatre octets décimaux et les affiche en binaire.