2016-08-23 1 views
-1

Quelqu'un peut-il expliquer pourquoi le code suivant retourne la vérité dans < 5.6.25, et faux pour tout ce qui précède? Je crois comprendre que cela devrait être vrai, car 192.168.0.1 est une adresse IP interne valide.Validation IP incohérent à partir de php 5.6.25

var_dump(filter_var('192.168.0.1', FILTER_VALIDATE_IP, FILTER_FLAG_NO_RES_RANGE | FILTER_FLAG_IPV4));

Voir les résultats entre les versions: https://3v4l.org/u9OFt

Répondre

3

192.168.x est dans la plage réservée aux adresses de classe C et que vous avez spécifié FILTER_FLAG_NO_RES_RANGE de les exclure.

Il est possible que ce fut un bogue fixe dans 5.6.25 partir, avec une régression dans les versions initiales de 7.x

+0

je être source de confusion réservée et privé ici. – jedifans

+0

Cela a du sens. J'ai mal interprété 'FILTER_FLAG_NO_RES_RANGE' en tant que _allowing_ ranges réservés. Je ne peux pas trouver de référence au changement dans le changelog, bien que cela ait du sens. – shauno

+0

'Filtre: Correction du bug # 71745 (FILTER_FLAG_NO_RES_RANGE ne couvre pas toute la plage 127.0.0.0/8' @shauno –