
Quando trabalhamos com Endereços IP Podemos realizar determinadas ações na base de tais identificador de. Podemos obter o localização, garantir ou negar acesso, executar filtrados por intervalos, etc.
No caso em que temos de fazer uma Filtrar por gama, ou qualquer outra operação que você quer saber se um determinado IP pertence ou não a uma gama de endereços, Nós podemos fazer uso do função nativa chamada PHP ip2long.
Função ip2long Retorna um valor numérico inteiro, Então muitos dos valores que serão retornados serão negativo para arquiteturas de 32 bits de. Para formatá-las Devemos usar corretamente formato não assinado (%u) e passar o valor formatado pela função printf().
1 | printf ( "%u", ip2long( $ip ) ); |
Voltando ao nosso propósito de saber se um determinado Endereço IP pertence a um intervalo de endereços, em seguida, deixar o código para fazer isso:
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; } |
Como você pode ver, é algo muito simples calcular. Só executar o conversões de usando a função ip2long de diferentes direções e Verifique se os diversos condicional Vamos indicar Se o IP está dentro os limites, inclusiva, gama.
