Esta función te devuelve la ip real.
Código PHP:
// Devuelve la ip real del usuario, sin proxys
function real_ip() // as string
{
if ($for = getenv('HTTP_X_FORWARDED_FOR')){
$afor = explode(",", $for);
return trim($afor[0]);
}else
return getenv('REMOTE_ADDR');
}
Tambien te dejo una pequeña clase que hice para obtener la ip y pasarla a hexadecimal para que ocupe menos en la db, a ver que os parece:
Código PHP:
// Esta clase contiene funciones para el manejo de las ips
// - Codificación de ip
// string codificar_ip(string)
// - Decodicifación de ip
// string decodificar_ip(string)
// - Identificación del ip del usuario
class ip
{
// Devuelve una cadena de 8 caracteres con la ip codificada en hexadecimal
function codificar_ip($ip='') // as string
{
$aux=array();
$ipcod="";
if(empty($ip))
$ip=$this->real_ip();
$aux=explode(".", $ip);
for($i=0;$i<sizeof($aux);$i++)
$ipcod.=str_pad(dechex($aux[$i]), 2, "0", STR_PAD_LEFT);
return $ipcod;
}
// Restaura la ip a partir de la cadena hexadecimal $ipcod
function decodificar_ip($ipcod) // as string
{
$ip="";
for($i=0;$i<4;$i++)
$ip.=hexdec(substr($ipcod,$i*2,2)).".";
$ip=substr($ip,0,strlen($ip)-1);
return $ip;
}
// Devuelve la ip real del usuario, sin proxys
function real_ip() // as string
{
if ($for = getenv('HTTP_X_FORWARDED_FOR')){
$afor = explode(",", $for);
return trim($afor[0]);
}else
return getenv('REMOTE_ADDR');
}
}