Comunidad de diseño web y desarrollo en internet online

Problema al recuperar el valor de una Cookie

Citar            
MensajeEscrito el 08 Feb 2011 10:22 am
Hola!!

Estoy trabajando con Cookies y sesiones para la autenticación de usuarios en mi web. Estoy empezando a implementar el sistema de Cookies pero, no consigo recuperar el valor de las mismas.

Me explico, cuando el usuario loguea, si ha marcado la casilla de recordatorio del mismo, entonces se hace:

Código :

setcookie('usuario', $_POST['usuario'], time() + 604800);



Pero luego, al comprobar desde el index si la cookie está (mediante un echo), no me aparece nada de nada. La cookie, a pesar de haberse creado en mi navegador y poder visualizar los datos, al hacer un echo $_COOKIE['usuario'] me aparece como vacia.

¿Alguien sabe a qué es debido?

Venga, gracias!

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Feb 2011 02:38 pm
ok te explico mira
cuando creas una cookie

Código PHP :

setcookie('usuario', $_POST['usuario'], time() + 604800);
$_COOKIE['usuario'] ;

y despues de crearla quieres inmediatamente recuperarla esta devolvera null o un E_NOTICE
no podras por que lo que php hace PRIMERO es leer las cabeceras en donde se encuentra la COOKIE y luego envia sus cabeceras propias al navegador y luego procesa el resto del codigo
nos e si me explico la cosa es que cuando quieres recuperar una variable inmediatamente de una cookie solo la recuperaras despues de refrescar la pagina eso tiene que ver en la forma como se distribuye las paginas webs ya que es un protocolo standar HTTP/ 1.1 bueno lo que deberias hacer en tu script es saber si la variable existe con un isset

Código PHP :

//comprobamos si existe la cookie
if(!isset($_COOKIE['usuario']))
{
    //como no existe le enviamos la cookie y ala vez asignamos un valor a la cookie
    setcookie('usuario', $_POST['usuario'], time() + 604800);
    $_COOKIE['usuario'] = $_POST['usuario'];
}

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 08 Feb 2011 02:55 pm
Buenas! Si si, doy por hecho que hay que refrescar la página, jeje. El setcookie lo hago desde el procesar_login.php. Pero el intentar ver el valor de la cookie, desde el index.php, con lo que supuestamente me debería de mostrar sin problemas el valor de la misma :-S. Es lo que no entiendo.

¿Alguna idea de por qué puede ser?

Por Gerupc

20 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Feb 2011 03:08 pm
Además de lo que te han dicho, te falta el cuarto parámetro en setcookie() que indica dónde (en qué dominio) la cookie es válida. Algunos navegadores no devuelven la cookie a menos que le digas explícitamente en qué dominio es válida. En tu caso debería ser:

Código PHP :

setcookie('usuario', $_POST['usuario'], time() + 604800,"/");  


La barra indica que la cookie es válida para todo el dominio actual (el index y todos los subdirectorios a partir del index).

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 08 Feb 2011 03:58 pm
Mecaguen la leche... jeje era eso =P.

Tenía que indicarle dónde quería que surtiese efecto.

Venga, pues muchas gracias!!

Por Gerupc

20 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.