tiempo sesiones ejemplos destruir delete cookie _cookie php cookies

sesiones - tiempo en cookies php



Establecer una cookie para que nunca caduque (11)

Al mirar la documentación de php sobre cómo configurar una cookie , veo que puedo establecer una fecha de caducidad para la cookie. Puede configurar la cookie para que expire al final de la sesión del navegador o en algún momento en el futuro, pero no veo una forma de establecer que la cookie nunca caduque. ¿Es esto posible y cómo se logra esto?


¿No puedes decir simplemente un ciclo sin fin, la cookie caduca como fecha actual + 1, por lo que nunca llega a la fecha en que se supone que caducará porque siempre será mañana? Un poco exagerado pero solo diciendo.


Creo que no hay forma de hacer que una cookie dure para siempre, pero solo tiene que configurarla para caducar en el futuro, como el año 2100.


Mi privilegio me impide hacer mi comentario en la primera publicación, así que tendrá que ir aquí.

Se debe tener en cuenta el error 2038 de Unix al establecer 20 años de anticipación a partir de la fecha actual que se sugiere como la respuesta correcta anterior.

Su cookie el 19 de enero de 2018 + (20 años) podría afectar el problema 2038 dependiendo del navegador y / o de las versiones que ejecute.


No debe hacer eso y eso no es posible de todos modos. Si lo desea, puede establecer un valor mayor, como 10 años antes.

Por cierto, nunca he visto una cookie con ese requisito :)


No estoy seguro, pero ¿no se eliminan las cookies en el navegador? De alguna forma hice una cookie que nunca expiró y Chrome reconoció la fecha de caducidad como "al cerrar el navegador" ...


No puede, pero ¿qué ocurre si establece el tiempo de caducidad en más de 100 años?


Si bien eso no es exactamente posible, podría hacer algo similar a lo que hace Google y establecer que su cookie caduque el 17 de enero de 2038 o algo igualmente lejano.

Con toda la practicidad, sería mejor que configurara su cookie durante 10 años o 60 * 60 * 24 * 365 * 10, que debería sobrevivir a la mayoría de las máquinas en las que vivirá su cookie.


Si desea conservar los datos en el equipo cliente de forma permanente, o al menos hasta que el caché del navegador se vacíe por completo, utilice el almacenamiento local de Javascript:

https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage

No use el almacenamiento de la sesión, ya que se borrará como una cookie con una edad máxima de cero.


Todas las cookies caducan según la especificación de cookies , por lo que esta no es una limitación de PHP.

Usa una fecha futura lejana. Por ejemplo, configure una cookie que expira en diez años:

setcookie( "CookieName", "CookieValue", time() + (10 * 365 * 24 * 60 * 60) );

Tenga en cuenta que si establece una fecha posterior a 2038 en PHP, el número se ajustará y obtendrá una cookie que expira al instante.


Establecer un tiempo absoluto futuro lejano :

setcookie("CookieName", "CookieValue", 2147483647);

Es mejor utilizar un tiempo absoluto que calcularlo en relación con el presente, tal como se recomienda en la respuesta aceptada.

El valor máximo compatible con sistemas de 32 bits es:

2147483647 = 2^31 = ~year 2033


Valor máximo: 2147483647

setcookie("CookieName", "CookieValue", 2147483647);

Para evitar el desbordamiento de enteros, la marca de tiempo debe establecerse en:

2^31 - 1 = 2147483647 = 2038-01-19 04:14:07

Establecer un valor más alto podría causar problemas con los navegadores más antiguos.

También vea el RFC sobre cookies :

Max-Age=value OPTIONAL. The value of the Max-Age attribute is delta-seconds, the lifetime of the cookie in seconds, a decimal non-negative integer. To handle cached cookies correctly, a client SHOULD calculate the age of the cookie according to the age calculation rules in the HTTP/1.1 specification [RFC2616]. When the age is greater than delta-seconds seconds, the client SHOULD discard the cookie. A value of zero means the cookie SHOULD be discarded immediately.

y RFC 2616, 14.6 Edad :

Si un caché recibe un valor mayor que el entero positivo más grande que puede representar, o si alguno de sus cálculos de edad se desborda, DEBE transmitir un encabezado Age con un valor de 2147483648 (2 ^ 31).

http://www.faqs.org/rfcs/rfc2616.html