- OpenPNEのセッションIDはcookieに保存されています。
- ユーザ画面のセッション名と管理画面のセッション名は別名で管理されている。
このためユーザ画面でログアウトつまりセッションIDの破棄を行っても 管理画面のセッションは保持された状態のままとなります。ユーザ画面のセッション名 PHPSESSID 管理画面のセッション名:OpenPNEadmin - 管理画面からユーザ画面へのリンクは全てtarget="_blank"指定で、 強制的に新しいウインドウで開きます。
【セッションが新しく生成される(切れる)条件】
- 開いている全てのブラウザを閉じたとき
- ブラウザアイコンから新しくブラウザを立ち上げたとき
【セッションが継続される(切れない)条件】
- 同一ウインドウ内の移動
- ページ内のリンクなどから右クリックで「新しいウインドウで開く」
- ページ内のリンクにtarget="_blank"の指定があり、強制的に「新しいウインドウで開く」になっていた場合
- メール内のリンクを開いたときにブラウザウインドウが既に開いていればこのセッションが継続されます。
(メールクライアントにより異なりますが、Becky!はこの仕様です) - ページ内の画像、外部CSS、外部JavaScriptなどが呼び出されるとき
- 同一のウインドウから派生したウインドウは、共通のセッションとなります。
- ブラウザアイコンから新しく起動したウインドウは別のセッションとなります。
☆ありがちな例☆
ユーザ画面にログインしていても、ブラウザアイコンから新しくブラウザを立ち上げるとログイン状態にはならない。
☆問題のない例☆
管理画面にログインして、ユーザ画面リンクを開くと1度はログイン画面がでますが、次からはログイン画面は出ずにページ遷移します。
セッションとは…
セッションというのは、アクセスした個人をサーバ側で認識するために、ある情報を保持することです。
ページを切りかえても、ログインしたユーザの情報を保持するために使われたりします。
HTTPリクエスト&レスポンスは単発の通信であって、接続された情報の保持は行われない。
接続した閲覧者の一意性を保持する手段として、
サーバとブラウザがお互いに、一意の鍵を保持し、それを照らし合わせる手法がセッションです。
IPアドレスによって接続情報を一意に考えることができそうですが
ADSL回線などでは固定のIPではなく、動的なDHCPのIPが使用されることがあるため
ユーザが常に同じIPとは限らない。また複数のユーザが同じ場所から接続した場合、
それらのユーザは同じIPでの接続となり、IPによる識別はできない。
キーとなるIDをHTTPアドレスに付与したり、cookieに保持することで同一のユーザとして
識別できる。