Yii2.0中Cookie与Session的常用操作方法

Dylan
Dylan
发布时间:2026-10-13| 3人浏览过
原创

本文详细介绍在Yii2.0框架中如何利用内置API进行操作Cookie和Session,包括创建、读取及删除的具体实现方式。

Cookie操作

在Yii2中,Cookie的数据读写主要依赖于 yii\web\Request 和 yii\web\Response 类。获取数据通常使用 $this->request->cookies,而设置或删除则需要调用 $this->response->cookies。

第1步:创建并写入Cookie

可以使用构造器参数或单独赋值的方式定义 yii\web\Cookie 对象,最后通过响应对象添加:

<?php
// 获取响应对象的 Cookies 集合
$cookies = Yii::$app->response->cookies;

// 创建一个新Cookie对象
$cookie = new yii\web\Cookie([
    'name' => 'smister',
    'value' => 'cookieValue',
    'expire' => time() + 3600, // 有效期(秒)
    'httpOnly' => true,         // 防止JS访问,提升安全
]);

// 将其添加到响应中
$cookies->add($cookie);
?>

参数说明: expire 为Unix时间戳;httpOnly 设为true可增强安全性。

第2步:读取Cookie信息

通过请求对象获取指定的Cookie值:

<?php
// 获取整个Cookie集合实例
$cookies = Yii::$app->request->cookies;

// 获取特定名称的Cookie对象 (返回 yii/web/Cookie)
$cookieObj = $cookies->get('smister'); 
$val1 = $cookieObj ? $cookieObj->value : null;

// 直接获取值 (默认返回null或设定的defaultValue)
$val2 = $cookies->getValue('smister');

// 检查Cookie是否存在
if ($cookies->has('smister')) {
    echo 'Cookie存在';
}
?>

第3步:删除Cookie

需从响应的Cookie集合中移除。对于已存在于浏览器的Cookie,可以通过将 expire 设置为过去的时间来让浏览器自动清除:

<?php
// 获取要删除的Cookie对象
$cookie = Yii::$app->request->cookies->get('smister');

// 从发送端移除(针对下次请求不生效)
Yii::$app->response->cookies->remove($cookie);

// 如果希望强制浏览器端过期,可以这样处理:
//$deletedCookie = clone $cookie;
//$deletedCookie->expire = time() - 1;
//Yii::$app->response->cookies->add($deletedCookie);
?>

注意: 每次操作增删时都应确保是在 $response->cookies 上执行。

Session操作

Yii2提供了统一的会话控制接口 $this->session。使用前建议开启Session: Yii::$app->session->open() 。

第1步:保存Session数据

将变量存入Session,支持字符串、数组等多种类型:

<?php
$session = Yii::$app->session;

// 保存单个键值对
$session->set('user_name', 'myname');

// 也可以直接使用数组赋值的方式(底层机制类似)
$session['score'] = [1, 2, 3];
?>

第2步:获取Session数据

根据Key读取之前存储的数据:

<?php
$name = $session->get('user_name');
$scores = $session['score'];
?>

第3步:销毁Session数据

删除特定的会话项或清空整个会话:

<?php
$session = Yii::$app->session;

// 删除指定键的值
$session->remove('user_name');

// 删除所有Session并结束当前会话
$session->destroy(); // 推荐用于注销场景
?>

以上就是Yii2.0中的COOKIE和SESSION详细用法,更多关于Yii教程的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。