Al mirar la documentación de php sobre la configuración de una cookie , veo que puedo establecer una fecha de vencimiento para la cookie. Puede configurar la cookie para que caduque al final de la sesión del navegador o en algún momento en el futuro, pero no veo una manera de configurar la cookie para que nunca caduque. ¿Es esto posible y cómo se logra?
187
$cookie->setMaxAge(2147483647);
, que es posterior a 2080 y funciona tanto en 32 bits como en 64 bits, con github.com/delight-im/PHP-CookieRespuestas:
Todas las cookies caducan según la especificación de cookies , por lo que esto no es una limitación de PHP.
Use una fecha futura lejana. Por ejemplo, configure una cookie que caduque en diez años:
Tenga en cuenta que si establece una fecha posterior a 2038 en PHP de 32 bits, el número se ajustará y obtendrá una cookie que caduca instantáneamente.
fuente
Valor máximo: 2147483647
Para evitar el desbordamiento de enteros, la marca de tiempo debe establecerse en:
Establecer un valor más alto puede causar problemas con los navegadores más antiguos.
Consulte también el RFC sobre cookies :
y RFC 2616, 14.6 Edad :
http://www.faqs.org/rfcs/rfc2616.html
fuente
Establezca un tiempo absoluto futuro lejano :
Es mejor usar un tiempo absoluto que calcularlo en relación con el presente como se recomienda en la respuesta aceptada.
El valor máximo compatible con sistemas de 32 bits es:
fuente
Mi privilegio me impide hacer mi comentario en la primera publicación, por lo que tendrá que ir aquí.
Se debe tener en cuenta el error 2038 de Unix cuando se establece con 20 años de anticipación desde la fecha actual, lo que se sugiere como la respuesta correcta anterior.
Su cookie el 19 de enero de 2018 + (20 años) podría alcanzar el problema 2038 dependiendo del navegador y / o las versiones en las que termine ejecutándose.
fuente
¿No puedes decir que un bucle sin fin, la cookie caduca como fecha actual + 1 para que nunca llegue a la fecha en que se supone que caduque porque siempre es mañana? Un poco exagerado pero solo diciendo.
fuente
Si bien eso no es exactamente posible, podría hacer algo similar a lo que hace Google y configurar su cookie para que caduque el 17 de enero de 2038 o algo igualmente lejano.
En la práctica, es mejor que configure su cookie durante 10 años o 60 * 60 * 24 * 365 * 10, lo que debería sobrevivir a la mayoría de las máquinas en las que vivirá su cookie.
fuente
Si desea conservar los datos en la máquina del cliente de forma permanente, o al menos hasta que el caché del navegador se vacíe por completo, use el almacenamiento local de Javascript:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
No use el almacenamiento de sesión, ya que se borrará como una cookie con una edad máxima de cero.
fuente
Nunca y para siempre son dos palabras que evito usar debido a la imprevisibilidad de la vida.
El último tiempo desde
1 January 1970
que se puede almacenar usando un32-bit
entero con signo es03:14:07 on Tuesday, 19 January 2038
(231-1 = 2,147,483,647
segundos después1 January 1970
) . Esta limitación se conoce como el problema del año 2038fuente
Creo que no hay una manera de hacer que una cookie dure para siempre, pero solo necesita configurarla para que caduque en el futuro, como el año 2100.
fuente
No debe hacer eso y eso no es posible de todos modos. Si lo desea, puede establecer un valor mayor, como 10 años por delante.
Por cierto, nunca he visto una cookie con tal requisito :)
fuente
No estoy seguro, pero ¿no se eliminan las cookies al cerrar el navegador? De alguna manera hice una cookie que nunca caducó y Chrome reconoció la fecha de caducidad como "al cerrar el navegador" ...
fuente
No puede, pero ¿qué pasa si establece el tiempo de vencimiento ahora + 100 años?
fuente