2016-04-10 20 views
1

目前我正在將所有PHP unix時間戳轉換爲超出2k38 issue的工作時間。PHP:setcookie()將在年後過期2038

我注意到setcookie()有效期參數使用了unix時間戳。有沒有一種方法來設置替代方法的過期日期,也許使用DateTime類?

從PHP文件約到期日期:

注意:您可能會注意到到期參數發生在一個Unix時間戳, 而不是日期格式WDY,DD-MON-YYYY HH:MM: SS GMT,這是 ,因爲PHP在內部執行此轉換。

+2

我不這麼認爲。問題是現在真的**是你的問題嗎? 2038年已有18年。我百分百地相信你的軟件會在這個日期之前被修改和修改...... –

+0

'setcookie'取得Unix時間戳記有什麼問題?沒有什麼內在限制他們只能達到2038年。如果你有64位PHP,我預計設置超過2038的cookie將會沒事。 – Chris

+2

你可以使用'header'重新實現'setcookie'函數來設置它們 - 但我認爲你不能正確理解問題:在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