Ver Mensaje Individual
  #5 (permalink)  
Antiguo 11/03/2005, 03:42
Avatar de txetxol
txetxol
 
Fecha de Ingreso: febrero-2002
Ubicación: Pamplona
Mensajes: 73
Antigüedad: 15 años, 11 meses
Puntos: 1
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');
    }