Yii2 session的使用方法(1)

yii2打開session

use  yii\web\Session;
 
$session = Yii::$app->session;
// check if a session is already open
if ($session->isActive) ...
// open a session
$session->open();
// close a session
$session->close();
// destroys all data registered to a session.
$session->destroy();

設置session

$session = Yii::$app->session;
$session->set('user_id', '1234');
//OR
$session['user_id'] = '1234';
//OR
$_SESSION['user_id'] = '1234';

讀取session

$session = Yii::$app->session;
$user_id = $session->get('user_id');
//OR
$user_id = $session['user_id'];
//OR
$user_id = isset($_SESSION['user_id']) ? $_SESSION['user_id'] : null;
銷燬session
$session = Yii::$app->session;
$session->remove('user_id');
//OR
unset($session['user_id']);
//OR
unset($_SESSION['user_id']);

數組session的讀取與設置

$session = Yii::$app->session;
$session['user'] = [
    'id' => 1,
    'username' => 'yiiuser',
];
echo $session['user']['id'];
echo $session['user']['username'];
 
$session['user.id'] = 1;
$session['user.username'] = 'yiiuser';


官網上的用法

首先,在Yii框架中,你不須要像標準PHP代碼那樣使用session_start(),
在 Yii 框架中,autoStart 屬性缺省被設置爲true,因此,
雖然沒有使用 session_start(),你仍然能夠使用 $_SESSION 全局變量,但最好使用
Yii框架封裝的 Yii::app->session:

設置session變量:Yii::app()->session['var']='value';
使用: echo Yii::app()->session['var'];
移除:unset(Yii::app()->session['var']);

更爲複雜一點的使用時如何配置你的session
配置項可設在 protected/config/main.php的components中:

'session'=>array(
   'autoStart'=>false(/true),
   'sessionName'=>'Site Access',
   'cookieMode'=>'only',
   'savePath'='/path/to/new/directory',
),

將session保持在數據庫的設置:

'session' => array (
    'class' => 'system.web.CDbHttpSession',
    'connectionID' => 'db',
    'sessionTableName' => 'actual_table_name',
),

好,還有什麼呢?對了,爲了調試,有時須要知道當前用戶的session ID,
該值就在 Yii::app()->session->sessionID 中。

最後,當用戶退出登陸(logout),你須要消除痕跡,可以使用:
Yii::app()->session->clear() 移去全部session變量,而後,調用
Yii::app()->session->destroy() 移去存儲在服務器端的數據。
相關文章
相關標籤/搜索