
Quando lavoriamo con Indirizzi IP Siamo in grado di eseguire determinate azioni sulla base di tali identificatore. Possiamo ottenere il posizione, garantire o negare accesso, eseguire filtro in base a intervalli, ecc.
Nel caso in cui abbiamo bisogno di fare un Filtra per intervallo, o qualsiasi altra operazione che si desidera sapere se un determinato IP appartiene o non per un intervallo di indirizzi, Possiamo fare uso della funzione nativa chiamata PHP ip2long.
Funzione ip2long Restituisce un valore valore integer con segno numerico, così molti dei valori che verranno restituiti saranno negativo per le architetture di 32 bit. Per formattarle correttamente, sarà necessario utilizzare il formato senza segno (%u) e passare il valore formattato dalla funzione printf().
1 | printf ( "%u", ip2long( $ip ) ); |
Tornando al nostro scopo di sapere se un certo Indirizzo IP appartiene a un intervallo di indirizzi, poi si lascia il codice per fare questo:
1 2 3 4 5 6 7 8 9 10 11 | function estaIPDentroDeRango( $ip, $inicioRango, $finRango ) { if ( $finRango === false ) { $estaDentro = ( $inicioRango === $ip ); } else { $estaDentro = ( ip2long( $inicioRango ) <= ip2long( $ip ) && ip2long( $finRango ) >= ip2long( $ip ) ); } return $estaDentro; } |
Come si può vedere, è qualcosa di molto semplice calcolare. Eseguire solo il conversioni utilizzando la funzione ip2long da direzioni diverse e Verificare i vari condizionale Ci indicherà Se l'IP è all'interno i limiti, Inclusive, gamma.
