FUNÇÕES PARA TRABALHAR COM IP

quinta-feira, 3 de julho de 2008 | Marcadores: | |

O PHP oferece diversas funções para trabalharmos com endeços de IP.
Veja alguns exemplos:

<?
$ip = $_SERVER[‘REMOTE_ADDR’];
echo $ip; // 127.0.0.1

$host = gethostbyaddr($_SERVER[‘REMOTE_ADDR’]);
echo $host; // localhost

$get_ip = gethostbyname(‘www.uol.com.br’);
echo $get_ip; // 200.221.2.45

$get_ips = gethostbynamel(‘www.google.com’);
print_r($get_ips); // Array ( [0] => 66.102.7.99 [1] => 66.102.7.147 [2] => 66.102.7.104 )
?>


A primeira função, $_SERVER[’REMOTE_ADDR’], é utilizada para sabermos o endereço de IP de um usuário, por exemplo.
A segunda, gethostbyaddr(), informa o nome do host name de Internet referente ao endereço de IP.
A função gethostbyname() retorna o endereço de IP correspondente a um host name de internet, já a última delas, gethostbynamel(), retorna uma lista de endereços de IP correspondente ao host name de internet.

Hoje, conheci mais duas funções para se trabalhar com IP muito interessantes. São elas, ip2long() e long2ip(). Observe:

<?
$receive = ip2long($_SERVER[‘REMOTE_ADDR’]);
$output = long2ip($receive);
echo $receive; // 2130706433 {integer}
echo $output; // 127.0.0.1 {string}
?>

Uma trabalha em conjunto com a outra. Enquanto a ip2long() converte uma string contendo um “Internet Protocol dotted address” válido em um integer; a long2ip() converte o integer em uma string.

A função ip2long() se torna muito útil, quando se faz necessário armazenar endereços de IP em um banco de dados. Reduzindo consideravelmente o espaço utilizado, além de tornar muito mais rápida uma futura consulta no banco de dados por esses endereços de IP.

Digo, reduzir o espaço por que ao invés de armazenar o endereço de IP como uma string - 127.0.0.1 - e utilizando para tal um campo do tipo char(15), o que gastaria 15 bytes. Você pode pode armazená-lo como um integer - 2130706433 - e gastar 4 bytes ao invés de 15. Posteriormente para exibir o endereço de IP, você usaria a função long2ip().

0 comentários: