Olhando a documentação do php sobre a configuração de um cookie , vejo que posso definir uma data de validade para o cookie. Você pode definir o cookie para expirar no final da sessão do navegador ou em algum momento no futuro, mas não vejo uma maneira de definir o cookie para nunca expirar. Isso é possível e como isso é realizado?
187
$cookie->setMaxAge(2147483647);
, que é mais tarde do que 2080 e funciona tanto em 32-bit e 64-bit, com github.com/delight-im/PHP-CookieRespostas:
Todos os cookies expiram conforme a especificação de cookies , portanto, isso não é uma limitação do PHP.
Use uma data muito futura. Por exemplo, defina um cookie que expira em dez anos:
Observe que, se você definir uma data após 2038 no PHP de 32 bits, o número será contornado e você receberá um cookie que expira instantaneamente.
fonte
Valor máximo: 2147483647
Para evitar excesso de número inteiro, o registro de data e hora deve ser definido como:
Definir um valor mais alto pode causar problemas com navegadores mais antigos.
Veja também o RFC sobre cookies :
e RFC 2616, 14,6 Idade :
http://www.faqs.org/rfcs/rfc2616.html
fonte
Defina um tempo absoluto futuro distante :
É melhor usar um tempo absoluto do que calculá-lo em relação ao presente, conforme recomendado na resposta aceita.
O valor máximo compatível com sistemas de 32 bits é:
fonte
Meu privilégio me impede de fazer meu comentário no primeiro post, então ele terá que ir aqui.
Deve-se levar em consideração o bug do unix 2038 ao definir 20 anos de antecedência a partir da data atual, sugerida como a resposta correta acima.
Seu cookie em 19 de janeiro de 2018 + (20 anos) pode atingir o problema 2038, dependendo do navegador e / ou versões nas quais você acaba executando.
fonte
Você não pode simplesmente dizer um loop sem fim, o cookie expira como data atual + 1 para que nunca atinja a data em que deveria expirar porque é sempre amanhã? Um pouco exagerado, mas apenas dizendo.
fonte
Embora isso não seja exatamente possível, você pode fazer algo semelhante ao que o Google faz e definir seu cookie para expirar em 17 de janeiro de 2038 ou algo igualmente distante.
Com toda a praticidade, é melhor definir seu cookie por 10 anos ou 60 * 60 * 24 * 365 * 10, o que deve sobreviver à maioria das máquinas em que ele permanecerá.
fonte
Se você deseja manter os dados permanentemente na máquina cliente - ou pelo menos até que o cache do navegador seja esvaziado completamente, use o armazenamento local Javascript:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
Não use armazenamento de sessão, pois ele será limpo como um cookie com idade máxima de zero.
fonte
Nunca e para sempre são duas palavras que eu evito usar devido à imprevisibilidade da vida.
O tempo mais recente desde
1 January 1970
que pode ser armazenado usando um32-bit
número inteiro assinado é03:14:07 on Tuesday, 19 January 2038
(231-1 = 2,147,483,647
segundos depois1 January 1970
) . Essa limitação é conhecida como o problema do ano 2038fonte
Acredito que não há uma maneira de fazer um cookie durar para sempre, mas você só precisa configurá-lo para expirar no futuro, como o ano 2100.
fonte
Você não deve fazer isso e isso não é possível de qualquer maneira. Se você quiser, pode definir um valor maior, como dez anos à frente.
By the way, eu nunca vi um cookie com esse requisito :)
fonte
Não tenho certeza, mas os cookies não são excluídos no fechamento do navegador? De alguma forma, fiz um cookie que nunca expirava e o Chrome reconheceu a data de validade como "ao fechar o navegador" ...
fonte
Você não pode, e se definir o tempo de expiração para agora + 100 anos?
fonte