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()
移去存储在服务器端的数据。