0

PHP の DateTime の拡張機能を作成しました。私のサイトの 1 つで、日付に非常に奇妙な動作があることに気付きました。気まぐれでそのサイトの Cookie を削除したところ、日付が正常に動作し始めました。

Cookie がなくなったので、問題を再現する方法がわかりません。実際の例がなく、レッドニシンを作成したくないため、具体的な例を挙げることに不安があります。私のカレンダー アプリケーションで、URL に 20121116 を渡し、2012 年 11 月 ('Ymd' 形式文字列) を指定していて、2098 などの遠い未来の日付として解釈されていることに気付きました。覚えていません。月の部分を正しく解釈した場合。

既知の問題/回避策はありますか? 問題を報告しているクライアントがいて、Cookie を削除することをお勧めしますが、何もする必要なくこの問題を解決したいと考えています。Cookie の値を送信できるほど技術的に熟練したクライアントにまだ会ったことがありません。

  • PHP バージョン 5.3.14 を使用しています
  • 私の .htaccess ファイルでは、次のようにタイム ゾーンを設定しました。php_value date.timezone America/New_York

アップデート

私のサイトは、Rackspace Cloud Sites でホストされています。私の現在の作業理論は、負荷分散されたサーバーの 1 つに日付が正しく設定されていないというものです。「X-Mapping-[ランダム文字列]」Cookie は、ブラウザーを負荷分散サーバーに関連付けますが、日付設定が正しくない (ロケール?) ため、Cookie をクリアすると、別のサーバーが取得される可能性があります。


解決

問題は、不適切な設定による負荷分散サーバーでした。Rackspace が修正しました。

4

1 に答える 1

2

いずれの場合も、 DateTime はCookie の影響を受けません(多くのセキュリティ ホールが開く可能性があります)。 いくつかの Cookie 値を分析し、それに応じて現在のタイムゾーンを設定するカスタム関数があるかもしれません。

于 2012-10-16T14:59:53.323 に答える