VERIFICATION D'UNE IP DANS UNE PLAGE

Messages postés
70
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
31 janvier 2009
- - Dernière réponse : DAM74
Messages postés
10
Date d'inscription
jeudi 14 avril 2005
Statut
Membre
Dernière intervention
15 janvier 2010
- 13 janv. 2010 à 15:53
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/49120-verification-d-une-ip-dans-une-plage

Dexmon
Messages postés
70
Date d'inscription
mardi 7 juin 2005
Statut
Membre
Dernière intervention
31 janvier 2009
-
Merci pour ce code :-) il marche parfaitement
TheSin
Messages postés
331
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
10 février 2009
-
J'aimerais juste signaler qu'il manque une vérification du format de l'IP (que se passe-t-il si on omet les '.' ou si on veut autre chose ? ;)).
Bref, ptite gestion d'erreur (exception par exemple) ca serait encore mieux ;) (et préciser peut-être aussi que c'est de l'IPv4 aussi ?).
Palleas_44
Messages postés
131
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 avril 2009
-
- Moi j'aurais utilisé un petit coup de filter pour valider le format avant
- plutot que des if(condition) return true; else return false; => return condition (la tu gagnes 10 lignes)
- pour le reste, j'sais pas, sans avoir la solution j'me dis que tu te prends trop la tête (j'aurais utilisé une regexp je pense)
- pense à mettre des commentaires, la on ne comprend rien
winwarrior
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1 -
Salut,
Tu peux utiliser ip2long pour faire ce genre de comparaison, voici un exemple de code:

function in_plage($sIp1, $sIp2, $sIp) { if (($iIp1 ip2long($sIp1)) false) return false; if (($iIp2 ip2long($sIp2)) false) return false; if (($iIp ip2long($sIp)) false) return false;
return (($iIp >= $iIp1) && ($iIp <= $iIp2));
}
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
13 -
Salut,

Une comparaison entre deux termes renvoit TOUJOURS un booléen (true ou false).
Donc histoire d'alléger le code et le rendre plus digeste, on peut remplacer :
if ($x4_ip < $x4_p2){
//echo "4";
return true;
}else{
//echo "5";
return false;
}

par :

return ($x4_ip < $x4_p2);

C'est plus court, c'est plus facile à lire et ça fait la même chose ^^