Foros del Web » Programando para Internet » PHP »

Problema con Cookie

Estas en el tema de Problema con Cookie en el foro de PHP en Foros del Web. Buenas amigos, tengo el siguiente codigo: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original if ( ! isset ( $_COOKIE [ 'idc' ] ) ) {   ...
  #1 (permalink)  
Antiguo 03/03/2011, 09:25
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Exclamación Problema con Cookie

Buenas amigos, tengo el siguiente codigo:

Código PHP:
Ver original
  1. if(!isset($_COOKIE['idc']))
  2. {
  3.     setcookie("idc", rand(0,99999999),time() + 60);
  4. }
  5. echo $_COOKIE['idc'];

La cuestion es que al entrar a la pagina deberia de validar y en caso de no estar establecida la cookie crear una, cierto? pero o al menos es lo que veo yo... La cosa es que no es sino hasta la segunda vez que recarga que establece la cookie.. ayudenme con esto por favor.. cualquier cosa que necesiten me dicen... Gracias de antemano!
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #2 (permalink)  
Antiguo 03/03/2011, 10:04
Avatar de Heiroon  
Fecha de Ingreso: junio-2010
Ubicación: Caracas, Venezuela - Por ahora...
Mensajes: 495
Antigüedad: 13 años, 9 meses
Puntos: 63
Exclamación Respuesta: Problema con Cookie

Este es todo el codigo... no se si me explique bien...

la idea es hacer un registro de visitas y estadisticas de los usuarios...

la cookie es para validar que no se guarde el mismo usuario ese mismo dia

aqui esta todo el codigo:

Código PHP:
Ver original
  1. <?php include('conf/conexion.php');
  2. if(!isset($_COOKIE['cookie'])){
  3.     setcookie("cookie", rand(0,99999999),time() + 3600);
  4. }
  5. include('include/info_user.php');
  6.  //se requiere el archivo para validar los datos de usuario de bdd para conectar  
  7.  $ip     = $REMOTE_ADDR;
  8.  $cookie = $_COOKIE['cookie'];
  9.  $fecha  = $dia." ".$numero." de ".$mes." del ".$anio;  
  10.  $hora   = date('h:i:s');  
  11.  $horau  = date('h');  
  12.  $diau   = date('z');  
  13.  $aniou  = date('Y');
  14.  //se asignan la variables  
  15.  $sql = "SELECT fecha_show, aniou, diau, horau, ip_add, port, cookie FROM visitas WHERE cookie LIKE '".$cookie."' AND aniou LIKE '".$aniou."' AND diau LIKE '".$diau."' AND horau LIKE '".$horau."' AND ip_add LIKE '".$ip."'";
  16.  $es = mysql_query($sql) or die("Error al leer base de datos: ".mysql_error);  
  17.  //se buscan los registros que coincidan con la hora,dia,año e ip    
  18.  if(mysql_num_rows($es)>0){
  19.     $last = mysql_fetch_row($es);  
  20.     echo "Su ultima visita fue el: ".$last[0];
  21.  }else{  
  22.     $sql = "INSERT INTO visitas (cookie, ip_add, port, fecha_show, hora, horau, diau, aniou, browser) VALUES ('".$cookie."', '".$ip."', '".$puerto."', '".$fecha."','".$hora."','".$horau."','".$diau."','".$aniou."', '".$navegador."')";
  23.     $es = mysql_query($sql) or die("Error al grabar un mensaje: ".mysql_error);  
  24.  }  
  25.  //creamos el condicionamiendo para logearlo o no.  
  26.     $sql = "SELECT * FROM visitas WHERE id_visita ";  
  27.     $es = mysql_query($sql) or die("Error al leer base de datos: ".mysql_error);  
  28.     $visitas = mysql_num_rows($es);
  29.        
  30.     $men=$men . "<table width='9%' border='1' height='25' bgcolor='#333333'>" . chr(10);  
  31.     $men=$men . "<tr>" . chr(10);  
  32.     $men=$men . "<td><font color=#FFFFFF>Visitas: ".$visitas."</font></td>" . chr(10);  
  33.     $men=$men . "</tr>" . chr(10);  
  34.     $men=$men . "</table>" . chr(10);  
  35.    
  36.  echo $men; ?>
__________________
Gmail : [email protected]
Twitter: @heiroon

I'm back!
  #3 (permalink)  
Antiguo 03/03/2011, 13:06
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 3 meses
Puntos: 17
Respuesta: Problema con Cookie

Cita:
Iniciado por Heiroon Ver Mensaje
Buenas amigos, tengo el siguiente codigo:

Código PHP:
Ver original
  1. if(!isset($_COOKIE['idc']))
  2. {
  3.     setcookie("idc", rand(0,99999999),time() + 60);
  4. }
  5. echo $_COOKIE['idc'];

La cuestion es que al entrar a la pagina deberia de validar y en caso de no estar establecida la cookie crear una, cierto? pero o al menos es lo que veo yo... La cosa es que no es sino hasta la segunda vez que recarga que establece la cookie.. ayudenme con esto por favor.. cualquier cosa que necesiten me dicen... Gracias de antemano!
Sucede que cuando llamas a setcookie, el servidor envía el correspondiente header Set-Cookie, pero en ese momento no existe esa variable en el matriz global $_COOKIE, ya que está es generada según las cookies que le envía el cliente en el request.

Te recomiendo guardar el número aleatorío en una variable, asignar la cookie con setcookie y escribir el valor el array $_COOKIE, de esa manera, en el primer request ya puedes acceder al valor, no esperar al segundo valor.

Tú código quedaría así


Código PHP:
<?php

if(!isset($_COOKIE['idc']))
{
    
$n rand(0,99999999),time() + 60;
    
setcookie("idc"$n);    
    
$_COOKIE['idc'] = $n;
}
echo 
$_COOKIE['idc'];

Etiquetas: cookie
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 19:16.