Foros del Web » Programando para Internet » PHP »

Porqué no tiene valor?

Estas en el tema de Porqué no tiene valor? en el foro de PHP en Foros del Web. Estoy intentando identificar a los usuarios que visitan mi web como sigue: Si el usuario ya visitó mi página tiene una cookie con su nombre, ...
  #1 (permalink)  
Antiguo 26/05/2004, 11:26
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Porqué no tiene valor?

Estoy intentando identificar a los usuarios que visitan mi web como sigue:

Si el usuario ya visitó mi página tiene una cookie con su nombre, entonces comprobamos si existe esa cookie:

if ( isset($_COOKIE["registrado"]) ){
$quien=$_COOKIE["registrado"];
}
else{
$quien=$REMOTE_ADDR;
}

Si la cookie no existe en vez de guardar su nombre en la base de datos guardamos su ip:

$consulta="insert into visitas ( `identificador` , `ano` , `mes` , `dia` , `hora` , `ip` ) values ('', '".$ano."' , '".$mes."' , '".$dia."' , '".$hora."' , '".$quien."' )";

Pero en este último caso no guarda la ip, es decir, $REMOTE_ADDR no tiene valor... ¿Porqué?

Probé a hacer un echo $REMOTE_ADDR y no sale nada...

Pero en cambio hice la siguiente prueba y si funciona:

<?php
echo $REMOTE_ADDR;
?>

¿Porqué en un script si tiene valor y en el otro no?

Saludos.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #2 (permalink)  
Antiguo 26/05/2004, 17:57
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 3 meses
Puntos: 13
yo creo que te estas complicando mucho con tantas comillas dobles y siimples. prueba algo mas sencillo:

$consulta="INSERT INTO visitas(identificador, ano, mes, dia, hora,ip) VALUES ('$ano','$mes','$dia','$hora','$quien')";
__________________
El conocimiento es libre: Movimiento por la Devolución
  #3 (permalink)  
Antiguo 27/05/2004, 20:19
 
Fecha de Ingreso: septiembre-2003
Mensajes: 248
Antigüedad: 20 años, 7 meses
Puntos: 2
Hola, me parece q es $_SERVER["REMOTE_ADDR"]
__________________
Jose A
  #4 (permalink)  
Antiguo 27/05/2004, 20:54
 
Fecha de Ingreso: noviembre-2003
Ubicación: Puente de ixtla
Mensajes: 773
Antigüedad: 20 años, 5 meses
Puntos: 0
prueva este codigo para que te de la ip

if ($_SERVER) {
if ( isset($_SERVER['HTTP_X_FORWARDED_FOR'] )) {
$ip_real = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif ( isset($_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 $ip_real;
__________________
°º¤ø,¸¸,ø¤º°`°º¤ø,¸S@M°º¤ø,¸¸,ø¤º°`°º¤ø,¸.
Dios solo nos dio el 0 y el 1 y con solo eso hemos construido un universo
  #5 (permalink)  
Antiguo 28/05/2004, 10:18
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Gracias a todos por vuestras respuestas

Ya lo he solucionado, resulta que el $REMOTE_ADDR estaba dentro de una función, lo he puesto fuera y ya funciona.

Saludos y gracias.

Frijolerou: creo que tienes razón.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
  #6 (permalink)  
Antiguo 28/05/2004, 11:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si ubieras usado $_SESSION['REMOTE_ADDR'] como te recomendaron .. no tendrías problemas de acceso a esas variabels de servidor pues son "superglobales" (están disponibles en todo el ambito del script .. incluido dentro de funciones).

Y .. por otro lado .. ya has comprobado que si no pones el código COMPLETO que usas y tal cual lo usas .. no hemos hecho más que "dar vueltas" al tema ...

Un saludo,
  #7 (permalink)  
Antiguo 30/05/2004, 10:02
 
Fecha de Ingreso: julio-2003
Ubicación: España
Mensajes: 723
Antigüedad: 20 años, 9 meses
Puntos: 0
Cluster, tú también tienes razón, pero aveces para no liar las cosas (cada uno tiene su 'estilo' programando) no pongo todo el código pensando que está de más.

Gracias por el consejo.
__________________
Solo nosotros podemos decidir qué hacer con el tiempo que se nos ha dado. (Gandalf)
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 03:27.