Foros del Web » Programando para Internet » PHP »

Problema con la obtencion de la IP

Estas en el tema de Problema con la obtencion de la IP en el foro de PHP en Foros del Web. buenas resulta q tengo esta codigo q me devuelve la IP del usuario. Código PHP: error_reporting ( 0 ); if ( $HTTP_SERVER_VARS [ 'HTTP_X_FORWARDED_FOR' ] !=  "" ...
  #1 (permalink)  
Antiguo 11/08/2005, 04:55
 
Fecha de Ingreso: diciembre-2003
Mensajes: 218
Antigüedad: 20 años, 3 meses
Puntos: 0
Problema con la obtencion de la IP

buenas resulta q tengo esta codigo q me devuelve la IP del usuario.
Código PHP:
error_reporting(0);
if (
$HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'] != "")
{
   
$IP_REAL $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']; // Muestra la IP real del usuario, es decir, la Pública
   
$IP_PROXY $HTTP_SERVER_VARS['REMOTE_ADDR']; // Muestra la IP de un posible Proxy
   
$ip $IP_REAL ;
}
else
{
   
$IP_REAL $HTTP_SERVER_VARS["REMOTE_ADDR"]; // En caso de que no exista un Proxy solo mostrara la IP Publica del visitante
   
$ip $IP_REAL  ;
}
error_reporting(1); 
Le pongo el error_reporting(0) para evitar los problemas con la varialbe 'HTTP_X_FORWARDED_FOR.

El problema es q lo estoy usando en 2 paginas dentro del mismo sitio y es exactamente el mismo codigo, pero en una si me introduce la direccion IP en la BD y en otra no.

Os pongo las 2 paginas a ver si veis algo q yo no veo.
visitas.php
Código PHP:
<?
$pag 
$_SERVER['PHP_SELF'];
error_reporting(0);
if (
$HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'] != "")
{
   
$IP_REAL $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']; // Muestra la IP real del usuario, es decir, la Pública
   
$IP_PROXY $HTTP_SERVER_VARS['REMOTE_ADDR']; // Muestra la IP de un posible Proxy
   
$ip $IP_REAL ;
}
else
{
   
$IP_REAL $HTTP_SERVER_VARS["REMOTE_ADDR"]; // En caso de que no exista un Proxy solo mostrara la IP Publica del visitante
   
$ip $IP_REAL  ;
}
error_reporting(1);
$day strftime("%d");
$mes strftime("%b");
$datecheck "SELECT * FROM ".PREFIX."_day_visit WHERE day='$day' && mes='$mes' ";  //Accedemos a la base de datos day_visit
$dateresult $db->query($datecheck) or die("Error en la consulta datecheck");
$reg $db->fetch_array ($dateresult);
$thisnum $reg['num'];
$que1 "SELECT * FROM ".PREFIX."_ip_logs  "//Accedemos a la base de datos de ips
$res1 $db->query($que1) or die("NOOOOO");
while(
$regok $db->fetch_array ($res1))
{
    
$xip $regok['ip'];
    
$xday $regok['dia'];
    
$xmes $regok['mes'];
    
$xnum $regok['ip_num'];
    if ((
$xip==$ip) && ($xday==$day) && ($xmes==$mes)) { $cont 'si';}
}
if (
$cont=='si'//Control de Ip
{
   
$plusnum $thisnum;
}
 else
{
    
$user = (isset($_SESSION['user']))?$_SESSION['user']:'-1';
   
$db->query("INSERT INTO ".PREFIX."_ip_logs (ip, dia, mes, ip_num,user) values ('$ip', '$day', '$mes', '','$user')");
   
$plusnum $thisnum+1;
}

//Fin control IP
?>
funciones.php
Código PHP:
//DevIP();
//Funcion:        Funcion q devuelve la IP de un usuario
//Devuelve:        IP del usuario.
function DevIP()
{
error_reporting(0);
if (
$HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'] != "")
{
   
$IP_REAL $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR']; // Muestra la IP real del usuario, es decir, la Pública
   
$IP_PROXY $HTTP_SERVER_VARS['REMOTE_ADDR']; // Muestra la IP de un posible Proxy
   
$ip $IP_REAL ;
}
else
{
   
$IP_REAL $HTTP_SERVER_VARS["REMOTE_ADDR"]; // En caso de que no exista un Proxy solo mostrara la IP Publica del visitante
   
$ip $IP_REAL  ;
}
error_reporting(1);
    return 
$ip;
}

function 
LogueaError($tipo,$msg_error)
{
    global 
$db;
    
$usuario = (isset($_SESSION['user']))?DevValUser($_SESSION['user'],"nombre"):DevIp();
    
$now date("Y-m-d H:i:s");
    
$result $db->query("INSERT INTO `".PREFIX."_log` VALUES ('', '$now', '$usuario', '$tipo', '$msg_error');");
}

//DevValUser();
//Funcion:        Devuelve un atributo de un usuario
//Parámetros:    $id    -> El id del usuario.
//                $att-> Atributo a mostrar.
//Devuelve:        El valor del usuario.
function DevValUser($id$att)
{
    global 
$db;
    
$result $db->query("SELECT $att FROM ".PREFIX."_usuario WHERE id='$id'");
    
$row $db->fetch_row($result);
    return 
$row[0];

Un saludo y gracias.
__________________
SymbianForever
SymbianForever.com, todo sobre y para tu symbian
aNieto2K | Themes para WordPress
De todo un poco
  #2 (permalink)  
Antiguo 11/08/2005, 05:24
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
Prueba con este :

Código PHP:
<?
if ($_SERVER) {
        if ( 
$_SERVER[HTTP_X_FORWARDED_FOR] ) {
            
$ip_real $_SERVER['HTTP_X_FORWARDED_FOR'];

    elseif ( 
$_SERVER['HTTP_CLIENT_IP'] ) {
            
$ip_real $_SERVER['HTTP_CLIENT_IP'];

else {
            
$ip_real $_SERVER['REMOTE_ADDR'];
}
}
 else {
        if ( 
getenv'HTTP_X_FORWARDED_FOR' ) ) {
            
$ip_real getenv'HTTP_X_FORWARDED_FOR' );

elseif ( 
getenv'HTTP_CLIENT_IP' ) ) {
            
$ip_real getenv'HTTP_CLIENT_IP' );

else {
            
$ip_real getenv'REMOTE_ADDR' );
}
}
echo 
'A) La ip es:  '.$ip_real;
echo 
"<br>";
echo 
"B) $REMOTE_ADDR<br>";
echo 
"C) $HTTP_PROXY_USER<br>";
echo 
"D) $REMOTE_ADDR<br>";
echo 
"E) $HTTP_X_FORWARDED_FOR<br>";
echo 
"F) $HTTP_CLIENT_IP <br>";
?>
solo con la opcion A te sirve pero para que veas todas los opciones

Un Saludo
  #3 (permalink)  
Antiguo 11/08/2005, 10:19
 
Fecha de Ingreso: diciembre-2003
Mensajes: 218
Antigüedad: 20 años, 3 meses
Puntos: 0
Muchas gracias, me ha ido perfecto!!

Un saludo.
__________________
SymbianForever
SymbianForever.com, todo sobre y para tu symbian
aNieto2K | Themes para WordPress
De todo un poco
  #4 (permalink)  
Antiguo 11/08/2005, 10:22
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
A partir de lo expuesto en este post, he creado una función para sacar la IP. Esta en la sección de articulos de www.maniacosdigitales.labarana.com
  #5 (permalink)  
Antiguo 11/08/2005, 13:14
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
jorgivaz no funciona la pagina que paso?

Spyn_ET, para eso estamos, me alegro que te sirviera

Un Saludo
  #6 (permalink)  
Antiguo 11/08/2005, 13:20
Avatar de DINASEN  
Fecha de Ingreso: marzo-2003
Mensajes: 997
Antigüedad: 21 años, 1 mes
Puntos: 1
ya la veo jejeje perdona que me ria pero si por poner
function sacarIP() {
y
return $ip_real;

}
eres el creador me parece perfecto pero no lo eres jejejej

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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 04:05.