2016-04-10 15 views
1

現在、私はすべてのPHP Unixタイムスタンプを2k38 issue以上に変換しています。PHP:setcookie()が2038年後に期限切れになる

私は気づいたsetcookie()有効期限パラメータは、UNIXのタイムスタンプを使用します。代替メソッドで有効期限を設定する方法はありますか、おそらくDateTimeクラスを何とか使用していますか?

注:MM:あなたは日付形式WDY、DD-MON-YYYYのHHとは対照的に、パラメータは、Unixのタイムスタンプに を取る期限切れに気づくかもしれPHPのドキュメントを約日付が期限切れから

: SS GMTの場合、PHPは内部的にこの変換を行うので、これは です。

+2

私はそうは思わない。問題は本当に**今**あなたのための問題ですか? 2038年は18年です。私は100%あなたのソフトウェアが_rewrittenであり、この日付までに適合していると確信しています... –

+0

Unixのタイムスタンプを取っている 'setcookie'は何が問題なのですか?本質的に2038年までしか使えないように制限しているものは何もありません.64ビットのPHPをお持ちなら、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 

を...とブラウザは日付を処理することができますことを願っています:

有効期限がユーザエージェントが を表すことができる最後の日付より後である場合、ユーザエージェントは有効期限を最後の 表現可能日に置き換えてもよい(MAY)。

とにかく、とにかくseecookie()を使用することができます。私が知る限り、それは32ビットバージョンのPHPでのみ問題になるでしょう。

+1

私が探していた答えです。ありがとうございました。 – evilReiko

関連する問題