- ベストアンサー
セッション認証についての対処法とは?
- サイトのセッション認証について、実在するアドレスかどうかを認証する機能を作成していますが、URLをクリックした際にログイン状態が維持されてしまう不具合が発生しています。対処法としては、一旦セッションを削除し再スタートさせることで対処しています。
- 複数のブラウザでログインしている状況で、URLをクリックするとログアウトせずにブラウザを閉じてもログイン状態が継続されてしまう問題が発生しています。対処法としては、セッションをリセットすることで対処しています。
- セッション認証機能において、URLをクリックした際にブラウザが特定のユーザでログインしてしまうという現象が発生しています。不安や知識不足から対処法を求めています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セッションに格納した情報は当然サーバーに保存されます。 セッションはクライアントごとに存在するわけですが、 複数ある中からそのクライアント用のセッションをどうやって探し出すのでしょうか? それがクライントに対して発効されるユニークな「セッションID」です。 サーバーはセッションIDからそのクライントのセッション情報を探し出します。 さて、そのセッションIDは誰がどこに保存しておくのでしょうか? これはクライント側です。クライント側が自分のセッション情報を覚えているのです。 その場所はURLの中(つまり画面の中)だったりクッキーだったりします。 場所についてはサーバー側の設定次第なのですが、通常はクッキーを使っていることでしょう。 では、ブラウザのウィンドウが複数存在する場合や、 別プロセスで起動している複数のブラウザがある場合、 ブラウザはクッキーの情報も別々に管理するのでしょうか、それとも共通のクッキーを使うのでしょうか? つまり、ブラウザ毎にセッションを共有しているのでしょうか、それとも共有していないのでしょうか? これはブラウザに異存する問題です。 IEの場合プロセスが違えばクッキーも別のようです。Firefoxは共通のようです。 ここまで問題が生じる原理を書いてみましたが、私もこの問題の単純な解決方法を知りません。。。 というわけで解決策は別の人に委ねます。 私自身は、一つのウィンドウでログアウトしたらもう一方でもログアウトでもいいや、という感じで諦めてます。 因みに、上に書いたようにIEはプロセス毎にクッキーを独立させられるようなので、 単に複数のユーザーでの振舞いをテストしたいなら、 IEを別プロセスで起動して(つまり完全に別々に起動して)テストすると良いと思います。 ちなみに、上で説明した理由により、 > そこで、その対処法として、そのURLのファイル上に、 > session_start(); > session_destroy(); > session_start(); このURLにアクセスしたのとは別にウィンドウが立っている場合にはそちらに強い影響を及ぼすと思われます。 突如セッションがクリアされるわけなので。
その他の回答 (1)
- nezumi0t0k0
- ベストアンサー率70% (12/17)
>ちなみに、上で説明した理由により、 >> そこで、その対処法として、そのURLのファイル上に、 >> session_start(); >> session_destroy(); >> session_start(); > このURLにアクセスしたのとは別にウィンドウが立っている場合にはそちらに強い影響を及ぼすと思われます。 > 突如セッションがクリアされるわけなので。 舌足らずなので補足です。 突如といってもプログラムを実行している途中にセッションが無くなるわけではありませんよ。 次の画面にジャンプしたら前の画面でセッションに入れたはずのデータが無い、という状況になるというだけです。 しかし、そもそもセッションは一定時間で削除されるものなので、それは特殊な状況ではなくて、常に起こりうる状況です。
お礼
nezumi0t0k0様 こんばんは。お世話になっております。 No1も含め、ご丁寧なアドバイスを有難う御座います。 セッションはサーバー側で、クッキーはブラウザ側で、という程度の知識しかなく、その仕組みを想像しながらスクリプトを…。などといった感じですが、nezumi0t0k0様からのアドバイスを基に、改めて仕組みを考えてみたいと思います。 ところで、 > このURLにアクセスしたのとは別にウィンドウが立って >いる場合にはそちらに強い影響を及ぼすと思われます。 ですが、全てのウィンドウを閉じても、ログアウトせずに閉じたユーザでログインしてしまうといった状況になっています。 これもクッキーとの関わりなんでしょうが(と、思ってる。)、クッキーとセッションの相互関係を(頭に)描く事が出来ず、セッション終了&開始、といった半ば強制的な?対処でした。 いずれにしても、改めてお礼も兼ねご報告させて頂きます。有難う御座いました。
補足
nezumi0t0k0様 こんばんは。まだまだ理解に乏しいところは御座いますが、nezumi0t0k0様のご説明で大分前進できたと思っております。 ご挨拶が遅れてしまいましたが、これにてお礼の言葉と代えさせて頂きます。有難う御座いました。