yii中的session

session配置文件所在目录,vendor\yiisoft\yii2\web
1.会在使用的时候自动开启不用手动开启
2.开启和关闭 Sessions

$session = Yii::$app->session;

// 检查session是否开启 
if ($session->isActive) ...

// 开启session
$session->open();

// 关闭session
$session->close();

// 销毁session中所有已注册的数据
$session->destroy();
//多次调用open() 和close() 方法并不会产生错误, 因为方法内部会先检查session是否已经开启。

2.访问 Session 数据

$session = Yii::$app->session;
// 获取session中的变量值,以下用法是相同的:
$language = $session->get('language');
$language = $session['language'];
$language = isset($_SESSION['language']) ? $_SESSION['language'] : null;
// 设置一个session变量,以下用法是相同的:
$session->set('language', 'en-US');
$session['language'] = 'en-US';
$_SESSION['language'] = 'en-US';
// 删除一个session变量,以下用法是相同的:
$session->remove('language');
unset($session['language']);
unset($_SESSION['language']);
// 检查session变量是否已存在,以下用法是相同的:
if ($session->has('language')) ...
if (isset($session['language'])) ...
if (isset($_SESSION['language'])) ...
// 遍历所有session变量,以下用法是相同的:
foreach ($session as $name => $value) ...
foreach ($_SESSION as $name => $value) ...
//当使用 session 组件访问 session 数据时候, 如果 session 没有开启会自动开启, 这和通过 $_SESSION 不同,$_SESSION 要求先执行 session_start()。

3.自定义session的存储
yii\web\Session 类默认存储 session 数据为文件到服务器上, Yii 提供以下 session 类实现不同的 session 存储方式
yii\web\DbSession:存储 session 数据在数据表中
yii\web\CacheSession:存储 session 数据到缓存中,缓存和配置中的缓存组件相关
yii\redis\Session:存储 session 数据到以 redis 作为存储媒介中
yii\mongodb\Session:存储 session 数据到 MongoDB。
所有这些session类支持相同的API方法集,因此, 切换到不同的session存储介质不需要修改项目使用session的代码。
如何在应用配置中配置yii\web\DbSession 将数据表作为 session 存储介质

return [
    'components' => [
        'session' => [
            'class' => 'yii\web\DbSession',
            // 'db' => 'mydb',  // 数据库连接的应用组件ID,默认为'db'.
            // 'sessionTable' => 'my_session', // session 数据表名,默认为'session'.
        ],
    ],
];

4.Flash 数据

//Flash数据是一种特别的 session 数据,它一旦在某个请求中设置后, 只会在下次请求中有效,然后该数据就会自动被删除。 常用于实现只需显示给终端用户一次的信息, 如用户提交一个表单后显示确认信息。
//可通过 session 应用组件设置或访问 session,例如:
$session = Yii::$app->session;
// 请求 #1
// 设置一个名为"postDeleted" flash 信息
$session->setFlash('postDeleted', 'You have successfully deleted your post.');
// 请求 #2
// 显示名为"postDeleted" flash 信息
echo $session->getFlash('postDeleted');
// 请求 #3
// $result 为 false,因为flash信息已被自动删除
$result = $session->hasFlash('postDeleted');
//和普通 session 数据类似,可将任意数据存储为 flash 数据。
//当调用 yii\web\Session::setFlash() 时, 会自动覆盖相同名的已存在的任何数据, 为将数据追加到已存在的相同名 flash 中,可改为调用 yii\web\Session::addFlash()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

原克技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值