- <? 
-   
-   function obtenerIPCliente() { 
-   
- /* En la variable $ip se almacenará la dirección del cliente. */ 
-   
-     $ip = 0; 
-   
- /* Si la variable $_SERVER['HTTP_CLIENT_IP'] tiene algún contenido, se asigna a la variable $ip. */ 
-   
-     if (!empty($_SERVER['HTTP_CLIENT_IP'])) $ip = $_SERVER['HTTP_CLIENT_IP']; 
-   
- /* Si la variable $_SERVER['HTTP_X_FORWARDED_FOR'] tiene algún contenido, se asigna a la variable $ip. 
-   
- En ese caso debe separarse la IP pública del cliente de las obtenidas a través de posibles redes locales. */ 
-   
-     if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
-   
- /* Se abre la matriz de IP's obtenidas de $_SERVER['HTTP_X_FORWARDED_FOR']. */ 
-   
-       $ListaDeip = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); 
-   
- /* Si ya hay contenido en $ip, se añade a la matriz. */ 
-   
-       if ($ip) { 
-   
-   
-         $ip = 0; 
-   
-       } 
-   
- /* Se eliminan IP's privadas, procedentes de posibles redes locales, así como la dirección de bucle local. 
-   
- Cuando se encuentra una IP pública (externa) se devuelve como resultado de la función. */ 
-   
-       foreach ($ListaDeip as $direccion) if (!eregi("^(192.168|172.16|10|224|240|127|0).", $direccion)) return $direccion; 
-   
-     } 
-   
- /* Si no había contenido en $_SERVER['HTTP_X_FORWARDED_FOR'] se devuelve la IP obtenida mediante $_SERVER['REMOTE_ADDR']. */ 
-   
-     return $ip ? $ip : $_SERVER['REMOTE_ADDR']; 
-   
-   } 
-   
- ?> 
-