Foros del Web » Programando para Internet » PHP »

Cookies

Estas en el tema de Cookies en el foro de PHP en Foros del Web. Hola a todos, El tema es por saber cómo funcionan los cookies, quisiera que me confirmen si estoy en lo correcto o no. Lo que ...
  #1 (permalink)  
Antiguo 08/03/2011, 02:56
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 14 años, 5 meses
Puntos: 6
Cookies

Hola a todos,
El tema es por saber cómo funcionan los cookies, quisiera que me confirmen si estoy en lo correcto o no.
Lo que sé de los cookies que los declaras en la cabecera HTTP, pero al darle el 3er parámetro que es el $expire, sirve para indicarle cuanto tiempo va a durar si tengo la página abierta?, porque si la cierro se destruye automáticamente?

Si fuese así, habría alguna forma de que el cookie se quede grabado en el pc, aún cerrando todos los navegadores y cuando vuelva abrir la web pueda recuperar los datos de nuevo?

Un saludo.
  #2 (permalink)  
Antiguo 08/03/2011, 06:09
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 11 meses
Puntos: 17
Respuesta: Cookies

Si, las cookies viajan en la cabecera HTTP, ejemplo al entrar al forosdelweb, tu navegador realiza una petición como la siguiente

Código:
GET / HTTP/1.1
Host: www.forosdelweb.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; es-ES; rv:1.9.2.15) Gecko/20110303 Firefox/3.6.15
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Y el servidor puede responder algo similar a

Código:
HTTP/1.1 200 OK
Connection: Keep-Alive
Proxy-Connection: Keep-Alive
Transfer-Encoding: chunked
Date: Tue, 08 Mar 2011 11:54:48 GMT
Content-Type: text/html; charset=ISO-8859-1
Server: Apache
Set-Cookie: fdwlastvisit=1299585288; expires=Wed, 07-Mar-2012 11:54:48 GMT; path=/; domain=.forosdelweb.com
Set-Cookie: fdwlastactivity=0; expires=Wed, 07-Mar-2012 11:54:48 GMT; path=/; domain=.forosdelweb.com
Cache-Control: private
Pragma: private
X-UA-Compatible: IE=7
Set-Cookie: vbseo_loggedin=deleted; expires=Mon, 08-Mar-2010 11:54:47 GMT; path=/
Vary: Accept-Encoding
Keep-Alive: timeout=2, max=150
Como puedes ver, en la respuesta del servidor, es donde el servidor envía la cookie, en ella define ciertos parametros como su nombre, valor, expiración y path. Tambien es posible definir una cookie por el lado del cliente con Javascript.


Respecto al tema de la expiración, depende de quien la generá (el servidor o el cliente por javascript) de todas formas respetar dicha expiración depende la implementación del navegador, en si, hoy en día todos los navegadores la respetan, es posible modificar un navegador para que no lo haga. pero en general todo navegador "correcto" debería mantener la cookie hasta la fecha de expiración o hasta que el usuario las borre (lo primero que suceda).

Hay formas de tener "cookies" que duren más tiempo, una de ellas es utilizando las Local Shared Object de Flash, ya que ellas no son eliminadas por el navegador (generalmente), de hecho actualmente no se eliminan, a menos que el mismo usuario las elimine.

De hecho ya existe una implementación (en Javascript, por lo tanto se ejecuta por el lado del cliente) llamada evercookie y utiliza varios métodos para lograr que un tipo de cookie extremadamente persistente (recuerda que siempre va a existir la posibilidad de borrarlas).

Saludos.
  #3 (permalink)  
Antiguo 08/03/2011, 06:44
 
Fecha de Ingreso: mayo-2010
Mensajes: 84
Antigüedad: 14 años, 5 meses
Puntos: 6
Respuesta: Cookies

Gracias por la respuesta DeaR, pero te explico porque tengo la duda.
Yo hice pruebas de cookies en mi ordenador.
Declaré :

setcookie("variable", "valor", time() + (60*60*24*30));

Declaré la variable por UN MES, hasta ahi vamos bien.
Esta "variable" al navegar por distintas páginas dentro de mi directorio, la podía mencionar en cualquier de ellas por $_COOKIE['variable'];.

EL GRAN PROBLEMA, es que al cerrar todos los navegadores y volver abrir una web dentro de mi directorio, no recuerda ninguna variable, el $_COOKIE aparece vacio.

Por eso, me pregunto si hay alguna forma de al volver a la página web, después de haber cerrardo TODO, que recuerdo las variables que asigné en su momento con una FECHA DE EXPIRACION DE UN MES.

O qué estoy haciendo mal, me falta declarar el path? el dominio? algo en php.ini?

Etiquetas: cookies
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 21:30.