2014-01-07 71 views
10

在這裏,我去什麼我做的是我使用會議Yii中

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

沒有

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

在登錄

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

在註銷

我想知道如果不打開和銷燬會話它值得。 Yii是否在內部做到這一點。

還有一件奇怪的事我不知道發生了什麼。在同一個會話的瀏覽器中,我可以登錄多個用戶。這不應該發生。這是我沒有使用打開和銷燬會話方法。

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

請讓我知道我怎麼算出這個

回答

25

爲了創建警予會議

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(); 
+0

unset(),destroy(),clear()會話應該在註銷時使用 – hir

+0

如果您使用yii auth,則需要調用logout()方法https ://github.com/yiisoft/yii/blob/1.1.14/framework/web/auth/CWebUser.php#L258 –

+0

Yii :: app() - > session-> clear();在行動註銷........在同一個會話瀏覽器我可以登錄多個用戶..這不應該發生這樣的事情。就是說,我沒有使用打開和銷燬會話方法.....這是我想figoure出 – hir

0

一旦你craeted會話它可以讓你在同一個瀏覽器多個時間,我的意思是相同的URL它可以讓你登陸,你可以用不同的名稱重命名會話變量,並檢查該特定變量以使用該變量登錄。

會話是一個Web應用程序組件,可以通過Yii :: $ app-> session進行訪問。

要開始會話,請調用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' 
1

不清除會話,只註銷:

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

Yii中,會話由 'CHttpSession' 類處理 - http://www.yiiframework.com/doc/api/1.1/CHttpSession

,你應該使用的方法「打開()'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#L83

關於您使用方法'close()'或'destroy()'的問題,方法'close()'只能取消會話但'destroy'的鍵刪除整個會話數據