yii2打开session
use yii\web\Session;
$session = Yii::$app->session;// check if a session is already openif ($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');//ORunset($session['user_id']);//ORunset($_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() 移去存储在服务器端的数据。