Глядя на документацию php по настройке cookie, я вижу, что я могу установить дату истечения срока действия cookie. Вы можете установить срок действия файла cookie в конце сеанса браузера или в будущем, но я не вижу способа настроить файл cookie так, чтобы он никогда не истек. Возможно ли это вообще и как это сделать?
187
$cookie->setMaxAge(2147483647);
позже 2080 года и работать как на 32-битной, так и на 64-битной версииОтветы:
Срок действия всех файлов cookie истекает согласно спецификации файлов cookie , поэтому это не ограничение PHP.
Используйте далекую будущую дату. Например, установите cookie, срок действия которого истекает через десять лет:
Обратите внимание, что если вы установите дату после 2038 года в 32-битном PHP, число будет изменено, и вы получите файл cookie, который истекает мгновенно.
источник
Максимальное значение: 2147483647
Чтобы избежать целочисленного переполнения, отметка времени должна быть установлена на:
Установка более высокого значения может вызвать проблемы со старыми браузерами.
Также смотрите RFC о куки :
и RFC 2616, 14,6 лет :
http://www.faqs.org/rfcs/rfc2616.html
источник
Установите абсолютное время далекого будущего :
Лучше использовать абсолютное время, чем рассчитывать его относительно настоящего, как рекомендуется в принятом ответе.
Максимальное значение, совместимое с 32-битными системами:
источник
Моя привилегия не позволяет мне комментировать первый пост, поэтому он должен будет перейти сюда.
При настройке на 20 лет заблаговременно от текущей даты следует принимать во внимание ошибку Unix 2038, которая является правильным ответом выше.
Ваш файл cookie от 19 января 2018 года (20 лет) вполне может столкнуться с проблемой 2038 года в зависимости от браузера и / или версий, на которых вы работаете.
источник
Разве вы не можете просто сказать бесконечный цикл, cookie истекает как текущая дата + 1, поэтому он никогда не достигает даты, на которую он должен истечь, потому что это всегда завтра? Немного излишне, но просто говорю.
источник
Хотя это не совсем возможно, вы можете сделать что-то похожее на то, что делает Google, и установить срок действия ваших файлов cookie до 17 января 2038 года или что-то такое же далекое.
В целом, вам может быть лучше установить cookie на 10 лет или 60 * 60 * 24 * 365 * 10, что должно пережить большинство машин, на которых будет работать ваш cookie.
источник
Если вы хотите сохранить данные на клиентском компьютере постоянно - или хотя бы до полного опустошения кэша браузера, используйте локальное хранилище Javascript:
https://developer.mozilla.org/en-US/docs/DOM/Storage#localStorage
Не используйте хранилище сеансов, так как оно будет очищено, как cookie с максимальным возрастом ноль.
источник
Никогда и навсегда два слова, которые я избегаю использовать из-за непредсказуемости жизни.
Самое позднее время,
1 January 1970
которое может быть сохранено с использованием целого32-bit
числа со знаком, -03:14:07 on Tuesday, 19 January 2038
(231-1 = 2,147,483,647
секунды после1 January 1970
) . Это ограничение известно как проблема 2038 годаисточник
Я считаю, что не существует способа сделать cookie-файл вечным, но вам просто нужно настроить его на срок действия в будущем, например, 2100 год.
источник
Вы не должны этого делать, и это все равно невозможно. Если вы хотите, вы можете установить большее значение, например, на 10 лет вперед.
Кстати, я никогда не видел куки с таким требованием :)
источник
Я не уверен, но куки не удаляются при закрытии браузера? Я каким-то образом сделал никогда не истекающий cookie и Chrome распознал дату истечения срока действия как "при закрытии браузера" ...
источник
Вы не можете, но что, если вы установите срок истечения сейчас + 100 лет?
источник