En regardant la documentation php sur la configuration d'un cookie, je vois que je peux définir une date d'expiration pour le cookie. Vous pouvez configurer le cookie pour qu'il expire à la fin de la session du navigateur ou à un moment donné dans le futur, mais je ne vois pas de moyen de configurer le cookie pour qu'il n'expire jamais. Est-ce même possible et comment est-ce possible?
196
$cookie->setMaxAge(2147483647);
, qui est postérieur à 2080 et fonctionne à la fois sur 32 bits et 64 bits, avec github.com/delight-im/PHP-CookieRéponses:
Tous les cookies expirent conformément à la spécification des cookies , il ne s'agit donc pas d'une limitation PHP.
Utilisez une date très future. Par exemple, définissez un cookie qui expire dans dix ans:
setcookie( "CookieName", "CookieValue", time() + (10 * 365 * 24 * 60 * 60) );
Notez que si vous définissez une date après 2038 en PHP 32 bits, le numéro sera bouclé et vous obtiendrez un cookie qui expire instantanément.
la source
Valeur maximale: 2147483647
setcookie("CookieName", "CookieValue", 2147483647);
Pour éviter un débordement d'entier, l'horodatage doit être défini sur:
2^31 - 1 = 2147483647 = 2038-01-19 04:14:07
La définition d'une valeur plus élevée peut entraîner des problèmes avec les anciens navigateurs.
Voir également la RFC sur les cookies :
et RFC 2616, 14,6 Âge :
http://www.faqs.org/rfcs/rfc2616.html
la source
Définissez une heure absolue lointaine :
setcookie("CookieName", "CookieValue", 2147483647);
Il vaut mieux utiliser un temps absolu que de le calculer par rapport au présent comme recommandé dans la réponse acceptée.
La valeur maximale compatible avec les systèmes 32 bits est:
2147483647 = 2^31 = ~year 2038
la source
Mon privilège m'empêche de faire mon commentaire sur le premier post donc il devra aller ici.
Il faut tenir compte du bogue Unix 2038 lors de la configuration 20 ans à l'avance de la date actuelle, ce qui est suggéré comme la bonne réponse ci-dessus.
Votre cookie du 19 janvier 2018 + (20 ans) pourrait bien rencontrer un problème en 2038 en fonction du navigateur et / ou des versions sur lesquelles vous vous trouvez.
la source
Ne pouvez-vous pas simplement dire une boucle sans fin, le cookie expire à la date actuelle + 1 afin qu'il n'atteigne jamais la date à laquelle il est censé expirer parce que c'est toujours demain? Un peu exagéré mais juste en disant.
la source
Bien que ce ne soit pas tout à fait possible, vous pouvez faire quelque chose de similaire à ce que fait Google et configurer votre cookie pour qu'il expire le 17 janvier 2038 ou quelque chose d'aussi loin.
Dans tous les aspects pratiques, vous feriez peut-être mieux de configurer votre cookie pendant 10 ans ou 60 * 60 * 24 * 365 * 10, ce qui devrait survivre à la plupart des machines sur lesquelles votre cookie vivra.
la source
Si vous souhaitez conserver les données sur l'ordinateur client de manière permanente, ou au moins jusqu'à ce que le cache du navigateur soit complètement vidé, utilisez le stockage local Javascript:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
N'utilisez pas le stockage de session, car il sera effacé comme un cookie avec un âge maximum de zéro.
la source
Jamais et pour toujours sont deux mots que j'évite d'utiliser en raison de l'imprévisibilité de la vie.
La dernière heure depuis
1 January 1970
laquelle cela peut être stocké à l'aide d'un32-bit
entier signé est03:14:07 on Tuesday, 19 January 2038
(231-1 = 2,147,483,647
secondes après1 January 1970
) . Cette limitation est connue sous le nom de problème de l' année 2038setCookie("name", "value", strtotime("2038-01-19 03:14:07"));
la source
Je pense qu'il n'y a pas de moyen de faire durer un cookie pour toujours, mais il vous suffit de le configurer pour qu'il expire très loin dans le futur, comme l'année 2100.
la source
Vous ne devriez pas faire cela et ce n'est de toute façon pas possible.Si vous le souhaitez, vous pouvez définir une valeur plus élevée, par exemple 10 ans à l'avance.
Au fait, je n'ai jamais vu un cookie avec une telle exigence :)
la source
Je ne suis pas sûr, mais les cookies ne sont-ils pas supprimés à la fermeture du navigateur? J'ai en quelque sorte fait un cookie qui n'expire jamais et Chrome a reconnu la date d'expiration comme "à la fermeture du navigateur" ...
la source
Vous ne pouvez pas mais que faire si vous définissez le délai d'expiration à maintenant + 100 ans?
la source