セッションの挙動について教えて下さい。
session_start();
でセッションを開始した時に、
クライアント側のクッキー(デフォだと$_COOKIE['PHPSESSID'])がなければセッションIDを与え、
サーバーには同セッションIDのセッションファイルが作成されると思います。
その後、session_regenerate_id(true);
でセッションIDを振り直すと、
クライアント側にセッションIDは残ったままになりますが、
サーバーのセッションファイルは削除されます。
・・・ここまでまず、あっているでしょうか?
次に、session_id();
で(セッションがある場合)現在のセッションIDを取得できますが、
現在のセッションというのは何を参照してきているのでしょうか?
セッションファイルが無くても、デストロイしていなければ、session_id();
をコールすると、
最後に付与したセッションIDが表示されます。
例えば、セッションファイルを故意に削除したとして、
認証で、session_id();
で取得したセッションIDと、クッキーに保存したセッションIDが一致するかを
チェックするとします。
そうした場合、セッションファイルがなくても認証は通るのでしょうか?
また、$_SESSION['hoge']などに値を入れていたとして、echoする場合、
これもsession_id();
に一致するセッションファイルに書いてある値を表示させているのでしょうか?
例えばsession_id();
にIDが入っていて、セッションファイルが無い場合どうなるのでしょうか?
テストしているとよく分からなくなってきました。
何卒、ご教授頂けますと幸いです。
補足
セッションの認証で、session_id();
とクッキーのセッションIDが一致するか。
また、セッション変数に入っている値が一致するか。
という認証を行おうと思っているのですが、
取得したsession_id();
のセッションファイルがあるかどうかを確認するという作業も要るのか・・・?
(そんなの調べても誰も書いてなかったですが)
と思ったのですが、不要でしょうか。
セッション変数、クッキーとセッションファイルの連携が理解しきれませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/10 16:55 編集
2016/07/10 17:16 編集
2016/07/10 17:08
2016/07/10 17:10
2016/07/11 06:26