2

次のようにセッションIDを出力します。

<?php print YII::app()->session->sessionID; ?>

log-inと自分のをチェックすると、たとえば次のIDようになります。huh09vuo33scdlkmfuc8651t12ログアウトしてもう一度確認しても、IDは変わりません。ただし、再度ログインすると、セッションIDが変更されます。

私の問題は、セッションにCookieに保存し、ログイン後にリロードする必要がある情報があることです。セッションIDが変更された場合、ログインしているユーザーが正しいユーザーであることを一意に確認するにはどうすればよいですか?

4

2 に答える 2

5

コンポーネントYii::app()->userCWebUserインスタンスであり、CWebUser::logout(boolean $destroySession=true)ドキュメントには次のように記載されています。

$ destroySessionboolean)セッション全体を破棄するかどうか。デフォルトはtrueです。falseの場合、clearStatesが呼び出され、setStateを介して保存されたデータのみが削除されます。

実際にYii::app()->user->logout(true)は、セッションを破棄します。つまり、すべてのセッション情報を復元することはできませんsession unset。PHPを使用session destroyして、サーバー上のすべてのセッション情報の設定を解除し、セッションID情報を破棄します。ただしYii::app()->user->logout(false) 、生のセッション情報を破棄したり、セッションIDの設定を解除したりすることはなく、Yiiが実際に使用する情報であるセッション状態のみをクリアします。生のセッション情報は関連付けられたままなので、これを「ソフトログアウト」として分類できます。セッションでは、状態のみがセッションIDから関連付け解除されますが、セッションIDは変更されません。

于 2013-03-19T00:25:50.740 に答える
0

方法を聞かないでください、しかしこれは私の問題を修正しました:

私が変更され:

Yii::app()->user->logout();

Yii::app()->user->logout(false);

多分それは他の誰かを助けるか、少なくとも彼らを正しい方向に導くでしょう。

于 2013-03-18T16:50:41.483 に答える