Foros del Web » Programando para Internet » PHP »

IP con register globals off?

Estas en el tema de IP con register globals off? en el foro de PHP en Foros del Web. Buenas. Tenia programado un script que capturaba la ip del visitante para la gestión de últimas páginas visitadas, el cual las guardaba en un db ...
  #1 (permalink)  
Antiguo 04/04/2007, 03:58
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 4 meses
Puntos: 1
IP con register globals off?

Buenas.
Tenia programado un script que capturaba la ip del visitante para la gestión de últimas páginas visitadas, el cual las guardaba en un db mysql por un cierto tiempo. El problema es que el servidor ha decidido desactivar register globals con lo cual no captura la ip del visitante. Hay alguna manera alternativa de hacer esto con register globals off?
Saludos
  #2 (permalink)  
Antiguo 04/04/2007, 04:31
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 9 meses
Puntos: 35
Re: IP con register globals off?

De hecho, seria la forma correcta el trabajar con register_globals a off.. yo uso esta funcion:
Código PHP:
function getIP() {
    if (isset(
$_SERVER['HTTP_X_FORWARDED_FOR'])) {
        
$ip $_SERVER['HTTP_X_FORWARDED_FOR'];
    }elseif (isset(
$_SERVER['HTTP_VIA'])) {
        
$ip $_SERVER['HTTP_VIA'];
    }elseif (isset(
$_SERVER['REMOTE_ADDR'])) {
        
$ip $_SERVER['REMOTE_ADDR'];
    }
    return (isset(
$ip) && long2ip(ip2long($ip))) ? $ip "Desconocida" ;

__________________
Sin Ideas
  #3 (permalink)  
Antiguo 04/04/2007, 05:18
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: IP con register globals off?

Funciona, pero me captura la IP del server no la del usuario.
Estoy entrando por la previsualización del Plesk, ya que todavía no tengo dominio asignado. Puede que se deba a eso?
Un saludo y gracias

Última edición por Nexus_; 13/04/2007 a las 00:47
  #4 (permalink)  
Antiguo 13/04/2007, 00:43
 
Fecha de Ingreso: noviembre-2006
Mensajes: 146
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: IP con register globals off?

Hola otra vez!
Sigo con el mismo problema, no hay manera de que me capture la IP privada.
He probado este código que he encontrado por ahí, pero en localhost me captura 127.0.0.1 y si lo subo al servidor me captura la IP del server.
Código PHP:
<?php

   
   
if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   
      
// los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR
   
      
$entries split('[, ]'$_SERVER['HTTP_X_FORWARDED_FOR']);
   
      
reset($entries);
      while (list(, 
$entry) = each($entries))
      {
         
$entry trim($entry);
         if ( 
preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/"$entry$ip_list) )
         {
            
// http://www.faqs.org/rfcs/rfc1918.html
            
$private_ip = array(
                  
'/^0\./',
                  
'/^127\.0\.0\.1/',
                  
'/^192\.168\..*/',
                  
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
                  
'/^10\..*/');
   
            
$found_ip preg_replace($private_ip$client_ip$ip_list[1]);
   
            if (
$client_ip != $found_ip)
            {
               
$client_ip $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      
$client_ip =
         ( !empty(
$_SERVER['REMOTE_ADDR']) ) ?
            
$_SERVER['REMOTE_ADDR']
            :
            ( ( !empty(
$_ENV['REMOTE_ADDR']) ) ?
               
$_ENV['REMOTE_ADDR']
               :
               
"unknown" );
   }
   
   echo 
$client_ip;
Me estoy empezando a desesperar...
Un saludo!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:18.