Comunidad de diseño web y desarrollo en internet online

¿Por qué nos e guardan las cookies?

Citar            
MensajeEscrito el 12 Abr 2011 05:14 pm
En un página que estoy haciendo hay un típico sistema de registro y login (php+mySQL) que me da problemas en el momento de establecer la cookie.

En el proceso de login, cuando llega el momento de establecer la cookie escribo:

setcookie('usuario',$_SESSION['nick']);

(creo que no hay ningúin error en la escritura) donde puedo asegurar que existe el valor de $_SESSION['nick'], ingresado por el usuario en el formulario de logeo.

Lo que pasa es que la cookie no queda guardada en el sistema y ya no se qué más mirar para tratar de averiguar la causa. El nvegador permite guardar cookies (de hecho lo he probado en varios navegadores y en dos ordenadores distintos, y el resultado siempre en el mismo), y toda la literatura que he leído al respecto dicen siempre que haga lo que he hecho en mi caso. Y en la definición de cómo poner cookies tampoco he encontrado nada que pudiera darme ningua pista.

¿A alguien más le ha pasado esto en alguna ocasión? ¿Y en caso afirmativo lo logró solucionar? ¿cómo?

¡Muchas gracias!

Por JordiF

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Abr 2011 07:46 pm
Buenas,
prueba a poner al principio de la página, antes de que cierre el </head>, <? ob_start() ?>

Esto te guarda en un buffer las cabeceras hasta que se ejecuta todo el código, lo que permite el envio de cookies desde cualquier parte del documento.

Y añade el parámetro del tiempo, creo que es necesario.

Saludos.

Por neisserian89

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Abr 2011 07:52 pm
cuando usas la funcion setcookie tienes que especificar en que path trabajara la cookie
prueba con

Código PHP :

setcookie('usuario',$_SESSION['nick'] , time() + 3600,'/');

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 12 Abr 2011 09:59 pm
Muchas gracias, pero todavía no em funciona, a pesar de haber probado las dos cosas que me han indicado.

Desesperado, he utilizado un archivo super tonto de esos que haces para practicar cuando estás estudiando PHP, he comprobado que funcionaba en un servidor, y después lo he subido al servidor de la página que me interesa... y allí no funcionaba. Ergo, supongo que me he estado devanando lac abeza cuando el problema debe estar en la configuración del propio servidor (tendré que hablar con los administradores del mismo), aunque nunca había oído que las cookies fueran uno de los problemas que podian darse por configuración del servidor.

En cualquier caso, me extraña puesto que hace tiempo comprobé que sí aceptaban cookies (al menso me guardaron unas).

Por JordiF

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Abr 2011 06:46 am
Los 3 primeros parámetros son obligatorios, nombre de cookie, valor, y tiempo de vigencia, lo estás poniendo bien.
Las lances o no en las cabeceras, no debería ser un problema por que usas ob_start, a si que no se me ocurre nada más, ¿has probado en localhost?.

Saludos y suerte

Por neisserian89

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Abr 2011 11:24 am
Me he peusto en contacto con los administradores del servidor por si tiene que ver con la configuración, pero finalmente he resuelto el problema mediante sesiones. Yo quería que el login pudiera ser más duradero, pero al menso con sesiones temporales funciona...

Por JordiF

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Abr 2011 02:08 pm
una cosa las cookies tienen que ser usadas antes de hacer una impresion o salida a la pantalla osea antes de cualquier echo, print, etc similares.

Código PHP :

<strong>esto no funcionara por que esto imprimiendo en pantalla</strong>
<?php
setcookie('usuario',$_SESSION['nick'] , time() + 3600,'/'); 

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Abr 2011 02:10 pm
Ya lo había tenido en cuenta, gracias, pero ni aún así (y la prueba está en el archivillo de pràcticas que he utilizado para comprobarlo).

Por JordiF

6 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Abr 2011 02:30 pm
haz esto instalate el plugin de firefox webDeveloper tiene una seccion de ver cookies de la pagina que estas visualizando
luego un archivo en blanco
con nombre
galleta.php
y pones este contenido , recuerda que a veces hay caracteres que son tomados como salida de impresion como el BOM de utf-8 es un caracter invisible

Código PHP :

<?php
error_reporting(E_ALL);
setcookie('probando_si_existo',"existis o no" , time() + 3600,'/');

luego de eso
entras a tu navegador y pones la direccion de ese archivo

http://localhost/galleta.php
luego click donde dice cookies del plugin webDeveloper y ves si hay algo

Por tuadmin

Claber

598 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Abr 2011 08:00 pm

tuadmin escribió:

una cosa las cookies tienen que ser usadas antes de hacer una impresion o salida a la pantalla osea antes de cualquier echo, print, etc similares.

Código PHP :

<strong>esto no funcionara por que esto imprimiendo en pantalla</strong>
<?php
setcookie('usuario',$_SESSION['nick'] , time() + 3600,'/'); 


Código PHP :

<?php ob_start()?>
<strong>esto [b]SI[/b]funcionara por que creas el buffer</strong>
<?php
setcookie('usuario',$_SESSION['nick'] , time() + 3600,'/'); 


No te desanimes, prueba las cookies en un fichero a parte como bien dice tuadmin, y cuentanos el error que te da, algún fallo hay, solo hay que encontrarlo :D

Saludos y suerte

Por neisserian89

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Abr 2011 10:20 am
Como suponía, al final el problema era de configuración. Añadiendo un comando al php.ini ya he logrado que guarde las cookies.

Muchas gracias a todos por la ayuda!!!

Por JordiF

6 de clabLevel



 

firefox

 

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