2013-07-08 14 views
5

私のPHP Webアプリケーションのセッションクッキードメインは、現在example.comに設定されています。 .example.comに変更したいと思います。新しい訪問者には、ini_set('session.cookie_domain', '.example.com')が有効です。この変更が行われる前に既にPHPSESSID Cookieを持っている訪問者の場合、ドメインは古い値のままです。現在のユーザーにCookieの削除を依頼することなく、セッションCookieのドメインを変更するにはどうすればよいですか?既存のユーザーのセッションクッキードメインを変更する方法

  • セキュリティ上の理由からHTTPOnlyなので、JavaScriptを使用してCookieを更新することはできません。
  • サーバー上のセッションを削除しても、Cookie全体がリセットされるわけではなく、Cookie値のみが更新されます(ドメインは同じままです)。
  • 最新のブラウザでは、再起動後にセッションが保持されるため、ブラウザセッションの最後にCookieが期限切れに設定されていても、ブラウザセッションは実質的に終了しません。

私が思いつくことができる唯一の可能性は、過去に期限切れになるようにクッキーを設定してから、新しいクッキーを取得するためにリダイレクトすることです。しかし、どの訪問者がクッキードメインを正しく設定しているのかわかりません。

+0

サーバーを新しいクッキーに切り替えただけで、古い「古い」ユーザーはログアウトしてしまうと、どれくらい悪くなりますか? –

+0

サーバー上のすべてのセッションを消去すると、ユーザーがログアウトし、Cookie値は更新されますが、クッキーがクライアント上で削除されなかったため、他のCookieパラメーターは変更されません。 –

+0

うんざりだと、長すぎるクッキーライフを設定しない限り、最終的にブラウザは古いクッキーを失効させます。 –

答えて

3

セッションを開始する前に、新しいsession_name()を設定してください。そうすることで、クッキーの名前が変更され、古いクッキーは無視されます。新しいクッキーのみが送信され、セッションで使用できます。

+0

Brilliant!作品!私はこれを考えなかったと信じられない... –