PHP: IP curto para IP longo.

30 07 2009

Essa semana comecei a aprender PHP+MySQL no Curso de TI que estou frequentando, embora eu já tivesse algum conhecimento anterior em PHP, mas não em MySQL. Então comecei a criar scripts meio aleatórios para fixar o conhecimento.

Com a falta do que fazer, resolvi criar um certo script que ao invés de salvar os ips da forma tradicional (ip curto, x.x.x.x), salvaria da forma comprida (xxxx). Eu não sabia como fazia, logo precisava aprender como fazer e procurei aprender como fazia isso.

Seria um novo desafio para mim e botei a mão na mass… digo no teclado!

Descobri quão simples era para transformar o curto em longo, era só pegar a primeira parte e multiplicar por 16777216 (256^3), somar com a segunda parte vezes 65536 (256^2) com a terceira parte vezes 256 e somar com a ultima parte.

Então pesquisei como eu podia dividir o numero em quatro partes. Foi um tanto difícil, mas achei um exemplo em ASP usando a função split que converti para o PHP.

Não era muito simples também, a sintaxe do split() é a seguinte:

list ($var1,$var2,$var3,$var4) = split (‘$sep’,$var,0)

Onde $var1 será o primeiro numero, $var2 o segundo, $var3 o terceiro $var4 o quarto e $sep é o separador dos números, neste caso o “.”, o $var no caso é a string de qual eu queria tirar os números, no caso o IP.

Excelente. ai foi só multiplicar:

$long = $var1 * 16777216 + $var2 * 65536 + $var3 * 256 + $var4;

Tudo funcionou, uma maravilha, mais de duas horas nessa pesquisa.

Hoje eu descobri algo mais interessante, muito interessante:

ip2long()

Adivinhem só para que serve essa função.
Sim, é para isso mesmo.

E sim, eu me odeio.

Anúncios

Ações

Information

One response

15 10 2009
Mamutti

Aconteceu comigo outro dia, em Python. Precisava de uma função que varresse uma estrutura de diretórios e me retornasse uma lista com os nomes dos arquivos. Depois de fazer, testar, debugar, refinar e escrever o resto do programa usando o algoritmo, descubro que a função walk() fazia tudo isso e melhor.

Deixe um comentário

Faça o login usando um destes métodos para comentar:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: