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');
    }
}