Yii session 和 cookie

来源:互联网 发布:docker 查看数据库 编辑:程序博客网 时间:2024/05/16 15:14
session
$session = Yii::$app->session;
$session->isActive //检查session 是否开启
$session->open(); //开启session
$session->close(); //关闭session
$session->destroy(); //销毁session
$session->get('username');
$session->set('username','lisi');
$session['username'] = 'lisi';
$session->remove('username'); //删除session
$session->has('username'); //检查session变量是否已存在
foreach($session as $key=>$val)....

//session为数组
$session['captcha'] = [
'username'=>'lisi',
'pwd'=>123456,
];
echo $session['captcha']['username'];

//获取session
$captcha = $session['captcha'];
$captcha['username'] = 'lisi';
$captcha['pwd']= 123456;

// 使用ArrayObject 数组对象代替数组
$session['captcha'] = new \ArrayObject;
...
$session['captcha']['username'] = 'lisi';
$session['captcha']['pwd'] = 123456;
$session['captcha.username'] = 'lisi';
$session['captcha.pwd'] = 123456;

如何在应用配置中配置yii\web\DbSession 将数据表作为session存储介质。
return [
'components' => [
'session' => [
'class' => 'yii\web\DbSession',
// 'db' => 'mydb', // 数据库连接的应用组件ID,默认为'db'.
// 'sessionTable' => 'my_session', // session 数据表名,默认为'session'.
],
],
];
也需要创建如下数据库表来存储session数据:
CREATE TABLE session( id CHAR(40) NOT NULL PRIMARY KEY, expire INTEGER, data BLOB)


cookie:
读取cookie
// 从 "request"组件中获取cookie集合(yii\web\CookieCollection)
$cookies = Yii::$app->request->cookies;
$language = $cookies->getValue('language', 'en'); //获取cookie值,如果没有返回默认值 en
if (($cookie = $cookies->get('language')) !== null) {
$language = $cookie->value;
}
// 可将 $cookies当作数组使用
if (isset($cookies['language'])) {
$language = $cookies['language']->value;
}
// 判断是否存在名为"language" 的 cookie
if ($cookies->has('language')) ...
if (isset($cookies['language'])) ...

//发送cookie
// 从"response"组件中获取cookie 集合(yii\web\CookieCollection)
$cookies = Yii::$app->response->cookies;// 在要发送的响应中添加一个新的cookie
$cookies->add(new \yii\web\Cookie([ 'name' => 'language', 'value' => 'zh-CN',]));// 删除一个cookie
$cookies->remove('language');
// 等同于以下删除代码
unset($cookies['language']);