IP CALCULATOR

Signaler
Messages postés
44
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
2 mars 2013
-
Messages postés
44
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
2 mars 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/50429-ip-calculator

Messages postés
44
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
2 mars 2013

Quel naze je fais :/ C'est corrigé ! Merci
En gros, j'avais oublié que preg_match reproduisait la chaine en case 0, quand j'ai codé le constructeur... ce qui était sioux, c'est que je m'en suis rappelé dans le reste du code :/

Je pense toujours au /31 et /32... mais après le manque de temps, la bronchite... le destin s'acharne :)
Messages postés
1
Date d'inscription
lundi 31 août 2009
Statut
Membre
Dernière intervention
7 octobre 2009

J'ai tenté d'utiliser cette classe... cependant elle a du mal avec les notations quad dotted visiblement...

Je lui fourni une ip 10.10.10.10 avec un masque de 255.255.0.0 et j'ai un beau network à 10.10.10.0 (!)

<?php
require('IP4Calc.class.php');
$oIP = new IP4Calc("10.10.10.10", "255.255.0.0");
$network=$oIP->get(IP4Calc::NETWORK, IP4Calc::QUAD_DOTTED);
$broadcast=$oIP->get(IP4Calc::BROADCAST, IP4Calc::QUAD_DOTTED);
echo "Le net serait ".$network;
echo "\nLa diff. serait ".$broadcast;
?>

php test.php
Le net serait 10.10.10.0
La diff. serait 10.10.10.255

La bonne réponse est : 10.10.0.0 et 10.10.255.255

code à revoir...
:)
Messages postés
5
Date d'inscription
mardi 23 novembre 2004
Statut
Membre
Dernière intervention
6 janvier 2012

Ok.
C'est donc une justification esthétique et pratique.
Et pardon, j'ai lu un peu trop rapidement le code, en effet les constantes servent d'index dans le tableau "général".
Merci pour ton explication
Messages postés
44
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
2 mars 2013

Bonjour,
Désolé, je suis encore sous l'eau en ce moment... mais promis, je pense à corriger le bug des /31 et /32. Je ne vois pas d'autre solution que de faire un hack bien moche "if /31 then" :o/ Cela dit, en lisant la RFC, elle est issue elle-même d'un vieux hack des spécifications des masques :)

Pour répondre à ta question MrJay42, et bien, heu... en fait faudrait déjà que je comprenne :P Je ne modifie pas mes constantes dans le constructeur.
En fait, à l'aide de mes constantes (vraies constantes, j'entends), j'initialise des tableaux. Pourquoi faire ? Pour "cacher" la réponse des calculs. Mettons que tu demandes plusieurs fois la même information, celle ci est cachée, et j'économise les qq microsecondes de calcul... Bon j'avoue, ca doit représenter que dalle, mais je préfère gaspiller un peu de mémoire, le temps que l'objet existe, plutôt que refaire des calculs déjà faits.
Ensuite, j'ai utilisé un tableau, plutôt que des variables sépérarées, pour compacter un peu le code, sans trop le complexifier. J'aurai pu faire un tableau par information (pour le cache), et faire un get par données avec le format en paramètre, il est vrai. C'est juste que c'était plus long à écrire, et assez répétitif, à base de nombreux copier/coller peu intéressants et donc source d'erreur.
Tant que ca reste comprehensible, moins il y a de lignes, moins il y a de bugs possibles :p
Afficher les 19 commentaires