Salve a tutti,
ho creato una funzione in php che mi permette di vedere se un indirizzo IPv4 fa parte di un determinato range:
Codice PHP:
function ipfaparte($ip, $range) {
list($rete, $bit) = explode('/', $range);
$n1 = substr(decbin(ip2long($ip)), 0, $bit);
$n2 = substr(decbin(ip2long($rete)), 0, $bit);
if($n1 == $n2) {
return(true);
} else {
return(false);
}
}
dove per $ip gli scrivo "192.168.54.32" e per $range scrivo "192.168.32.0/12", ma quando provo a scrivere questo:
Codice PHP:
echo (ipfaparte("192.168.54.32", "192.168.32.0/12") ? "si" : "no");
non mi stampa niente.
Però ho notato che se io aggiungo un var_dump() all'interno della funzione, facendola diventare così:
Codice PHP:
function ipfaparte($ip, $range) {
list($rete, $bit) = explode('/', $range);
$n1 = substr(decbin(ip2long($ip)), 0, $bit);
$n2 = substr(decbin(ip2long($rete)), 0, $bit);
var_dump($ip, $range, $n1, $n2);
if($n1 == $n2) {
return(true);
} else {
return(false);
}
}
mi fa vedere il dump delle variabili e il sì/no come risultato della funzione così:
Codice:
string(10) "87.16.78.0"
string(2) "25"
string(25) "1010111000100000100111000"
string(25) "1010111000100000100111000"
si
(vabbè in questo risultato non ho messo i valori ip e range che ho scritto sopra)
Come posso risolvere questo?
Grazie,
foreach