Programación Web y Scripting > PHP

 necesito una mano en mi SHOP, no me guarda bien la ip

(1/1)

pacorubio77:
Hola amigos, me gustaria que alguien me ayudara con este problema, quiero que me guarde la ip del cliente comprador de mi shop, pero tengo un problema, en mi base de datos, me guarda esta ip 172.23.4.166(no tendria que guardarme esta ip), pero si la hago desde otro ordenador dentro de la oficina me guarda 172.23.4.161..es decir esas ip's no existen, mi codigo es el siguiente:


<?php echo
      HEADING_IPRECORDED_1;
      $ip_iprecorded = YOUR_IP_IPRECORDED;
      $isp_iprecorded = YOUR_ISP_IPRECORDED;
       $ip = $HTTP_SERVER_VARS["REMOTE_ADDR"];
      $client = gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]);
      $str = preg_split("/./", $client);
      $i = count($str);
      $x = $i - 1;
      $n = $i - 2;
      $isp = $str[$n] . "." . $str[$x];
?>

<?php echo "
<div><small><B><font color='blue'>$ip_iprecorded: $ip
<Br>$isp_iprecorded: $isp</B></font><Br><Br></small>";
?>

y esto me imprime por pantalla:

YOUR_IP_IPRECORDED: 172.23.4.166
YOUR_ISP_IPRECORDED: 4.166

esa ip no existe..verdad? me tendria que dar mi ip que es 84...etc...etc

Alguien me puede decir que hago mal?

un saludo, espero respuesta.
Gracias.

System@32:
Si el script esta en hosting fuera de tu empresa, puede que sea por causa de algun proxy... y si lo tienes dentro de tu empresa puede que sea alguna IP interna... eso es probarlo y ver causas...

Porcierto, en lugar de

--- Código: PHP --- $HTTP_SERVER_VARS["REMOTE_ADDR"];  
usa

--- Código: PHP --- $_SERVER['REMOTE_ADDR']  
y por si hay algun proxy, aunque los proxys de hoy ocultan muy bien la IP original...

--- Código: PHP --- $_SERVER['HTTP_X_FORWARDED_FOR']  

F_Tanori:
Justo como te ha dicho System@32

yo uso sete metodo



--- Código: PHP ---$IP=getenv("HTTP_X_FORWARDED_FOR")? getenv("HTTP_X_FORWARDED_FOR"): getenv("REMOTE_ADDR"); 
Saludos

pacorubio77:
Muchisimias gracias...de la forma que me dijisteis lo solucione....muchisimas gracias....
Un saludo

th3r0rn:

--- Código: PHP ---<?   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) {         array_unshift($ListaDeip, $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'];   } ?> 

Navegación

[0] Índice de Mensajes

Ir a la versión completa