2016-04-10 6 views
1

В настоящее время я конвертирую все мои временные метки unix PHP для работы за пределами 2k38 issue.PHP: setcookie() истекает после года 2038

Я заметил, что setcookie()expired date Параметр использует временную метку unix. Есть ли способ установить срок действия альтернативного метода, возможно, используя класс DateTime?

С PHP документ о истекает дата:

Примечание: Вы можете заметить, что истекают параметр принимает метку времени Unix, в отличие от формата даты Wdy, DD-ПН-YYYY HH: MM: SS GMT, это , потому что PHP делает это преобразование внутренне.

+2

Я так не считаю. Вопрос в том, действительно ли это ** ** для вас? 2038 лет через 18 лет. Я на 100% убежден, что ваше программное обеспечение будет написано и адаптировано до этой даты ... –

+0

Что случилось с 'setcookie', взявшим временную метку Unix? Нет ничего, что по своей сути ограничивает их только до 2038 года. Если у вас есть 64-битный PHP, я бы ожидал, что установка истечения срока действия cookie за 2038 год будет прекрасной. – Chris

+2

Вы можете повторно реализовать функцию 'setcookie', используя' header', чтобы установить их самостоятельно, но я думаю, что вы не понимаете правильно проблему: после 2038 года мы все еще можем использовать временную отметку unix. – Federkun

ответ

5

Вы не можете изменить подпись функции. Ну, по крайней мере, не возиться со странными расширениями PHP. Но поскольку cookie spec не использует Unix метки времени на все, что вы можете просто написать свою собственную функцию и вызвать header() вручную:

Set-Cookie: lang=en-US; Expires=Wed, 09 Jun 2099 10:18:14 GMT 
Set-Cookie: lang=en-US; Max-Age=8640000 

... и надеемся, что браузеры способны обрабатывать даты:

Если время истечения срока позже последней даты, которую представляет пользовательский агент , пользовательский агент МОЖЕТ заменить время истечения срока действия на последнюю представимую дату.

Или вы можете просто использовать seecookie() в любом случае. Насколько я знаю, это будет проблемой только в 32-битных версиях PHP.

+1

Просто ответ, который я искал. Спасибо. – evilReiko

 Смежные вопросы

  • Нет связанных вопросов^_^