小さなCMSを書いています。ユーザー認証は、名前付きセッションで、php で設定されたセッション変数によって行われます。logout が呼び出されると、ajax ルーチンが別の php スクリプトをロードして作業を行います。この別のスクリプトは、同じセッション パラメータを使用します。セッション変数はランダム データで個別に上書きされ、セッションは破棄されます。これは機能します。ログアウト後にブラウザの Cookie リストを調べると、セッション Cookie が削除されていることがわかります。これまでのところ、すべて問題ありません。
ユーザーがログオン中に同じサイトの別のページに移動したり、新しいブラウザー タブで 2 番目のページを開いたりすると、問題が発生します。いずれかが完了すると、ログアウト ルーチンはセッションを破棄または設定解除できません。さらに悪いことに、ログアウト時にパスワード セッション変数がランダム化されていたとしても、ページをリロードすると元の値に戻り、事実上ユーザーは再びログオンします。
ブラウザーのデータを調べると、 session_destroy() が発行されたときにセッション Cookie を削除できなかったことを示しており、プログラムで実行できることは何もありません。
2 番目のサイト ページ (同じセッション パラメータを使用する) を開くと、セッションがロックされているように見えるので、どちらのページからも破棄できない理由を理解しようとしています。PHP のマニュアルでは、そのような動作はどこにも提案されていません。
ブラウザーのキャッシュが原因の可能性が示唆されていますが、可能性は低いようです。
しばらくの間、これと格闘してきました。何か案は?
テストは Firefox のバージョン 6 から最新のもので行われました。