web-dev-qa-db-ja.com

Yiiのセッション

ここで私が使っているのは

 Yii::app()->SESSION['userid']

なしで

  Yii::app()->session->open();

ログイン時

  Yii::app()->session->destroy();

ログアウト時

オープンセッションをしてセッションを破壊しないかどうかを知りたいです。 Yii内部で実行します。

もう1つ奇妙なことに、何が起こっているのかわかりません。セッションの同じブラウザで、複数のユーザーにログインすることができます。これは起こるべきではありません。セッションのオープンおよび破棄メソッドを使用していないということです。

 public function actionLogout()
{
    Yii::app()->user->logout();
    Yii::app()->session->clear();
    $this->redirect(Yii::app()->controller->module->returnLogoutUrl);
}

どうやってこれを理解するのか教えてください

14
Tested

yiiセッションを作成する場合

Yii::app()->session['userid'] = "value";

このような価値を得ることができます

$sleep = Yii::app()->session['userid'];

そして、セッションの設定を解除します

unset(Yii::app()->session['userid']); # Remove the session

ユーザーがサインアウトした場合、すべてのセッションを削除する必要があります。

Yii::app()->session->clear();

この後、サーバーから実際のデータを削除する必要があります

Yii::app()->session->destroy();
33
Moyed Ansari

セッションをクリアせず、ログアウトのみ:

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

セッションを作成すると、同じブラウザで複数回許可されます。同じURLでログインできるようになります。セッション変数を別の名前に変更して、その特定の変数をチェックしてログインできます。

セッションは、Yii :: $ app-> session経由でアクセスできるWebアプリケーションコンポーネントです。

セッションを開始するには、open()を呼び出します。セッションデータを完了して送信するには、close();を呼び出します。セッションを破棄するには、destroy()を呼び出します。

セッションを配列のように使用して、セッションデータを設定および取得できます。例えば、

$session = new Session;

$session->open();

$value1 = $session['name1'];  // get session variable 'name1'

$value2 = $session['name2'];  // get session variable 'name2'

foreach ($session as $name => $value) // traverse all session variables

$session['name3'] = $value3;  // set session variable 'name3'
0
user4153245

YIIでは、セッションは「CHttpSession」クラスによって処理されます- http://www.yiiframework.com/doc/api/1.1/CHttpSession

メソッド 'open()'を使用する必要がある場合Yii::app()->session->open();は設定によって異なります。 _main.php_にある場合、
'session' => array ( 'autoStart' => true, ),その後、セッションはYII自体によって自動的に開始されます。メソッド 'init()'のソースコードはここで参照できます-- https://github.com/yiisoft/yii/blob/1.1.16/framework/web/CHttpSession.php#L8

メソッド「close()」または「destroy()」の使用に関する質問については、メソッド「close()」はセッションのキーを設定解除するだけですが、「destroy」はセッションデータ全体を削除します

0
Vinod Tigadi