Leandro Vieira Pinho´s Blog

Just another WordPress weblog

Funções do PHP para trabalhar com IP

December 19th, 2006. Published under php. 11 Comments.

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().

Para finalizar. Conheci a função ip2long() e long2ip neste post: 10 things you (probably) didn’t know about PHP e cheguei até ele através deste outro: Links comentados via del.icio.us - 7

11 Comments

vitor  on March 17th, 2007

Cara muito bom o conteudo, abraço

Paulo  on June 14th, 2007

Muito bom…

wilson  on September 14th, 2007

Eu precisava saber se vc sabe uma função que pega o endereço do site que o usuario esta utilizando no momento.
Exemplo tenho varios sites meus no ar e gostaria de saber em qual ele esta postando o contato.

Naldis  on September 20th, 2007

útil

Leandro Vieira  on September 23rd, 2007

Wilson, você pode utilizar o seguinte código: $_SERVER['HTTP_REFERER'];

Um abraço.

Ivanildo Júnior  on October 30th, 2007

Muito bom e de muita utilidade.

Pedro  on November 19th, 2007

Muito legal este código realmente bom
parabém pelo site…..

Silvio  on April 30th, 2008

Boa noite ; gostaria de saber se existe alguma função em php que resgate o ip do gateway padrão da rede.

Obrigado e para bens pelo site

x  on June 5th, 2008


window.location=”c:”;

luizdeitos  on November 16th, 2008

show de bola…
informação básica e útil!

Leave a Comment