4

私はこれら 2 つの Cookie を持っていますが、それらは機能しますが、Cookie の有効期限が 5 時間以上の場合にのみ有効です。Cookie の有効期限を 0 に設定しても機能しますが、Cookie が 2 時間で期限切れになるようにする必要があります。Cookie が 2 時間で期限切れになるように設定すると、Firefox では機能しますが、Chrome や IE では機能しません。

有効期限が今から 5 時間以上経過している場合にのみ、ブラウザー (Chrome) が Cookie を取得します。または有効期限が 0 に設定されている場合。何が間違っていますか?

setcookie('expire', 'test', time() + 7200, "/");

時間機能が機能しない理由がわからないので、Cookie は 2 時間で期限切れになります。

どんな助けでも大歓迎です。

4

2 に答える 2

10

では、あなたは米国中部または東部のタイムゾーンにいますか? おそらく、タイムスタンプは UTC として解釈されているため、オフセットを超えた場合にのみ機能します。phpdate の C や R のような形式を使用する方が安全です。

$date = new Datetime('+2 hours');
setcookie('expire', 'test', $date->format('C'), "/");

または、事前定義された Cookie 日付形式を使用することもできます。

setcookie('expire', 'test', $date->format(DateTime::COOKIE), "/");

これらには文字列にオフセットが含まれているため、ブラウザーがそれを台無しにすることはできません。また、応答ヘッダーは人間が読める形式であるため、応答ヘッダーを見るとトラブルシューティングがはるかに簡単になります。

于 2012-04-11T14:47:24.863 に答える
0

サーバーでこれを実行している場合は、開発サーバーの時間が正しいことを再確認してください。これとまったく同じ問題があり、不安定なサーバー時間が原因であることがわかっています。

于 2012-04-11T14:45:53.913 に答える