📜  yii2 设置 cookie - PHP (1)

📅  最后修改于: 2023-12-03 15:21:21.549000             🧑  作者: Mango

Yii2 设置 Cookie

在 Yii2 中,设置 Cookie 非常方便。Cookie 用于在客户端浏览器中存储有关用户会话的信息。在本文中,我们将讨论如何在 Yii2 中设置 Cookie。

设置 Cookie

通过 Yii::$app->response->cookies 属性访问响应对象的 cookie 集合。您可以使用该集合添加、修改或删除 cookie。

下面是在 Yii2 中设置 Cookie 的示例:

// 设置 Cookie
$cookie = new \yii\web\Cookie([
    'name' => 'mycookie',
    'value' => 'Hello, World!'
]);

Yii::$app->response->cookies->add($cookie);

在上面的代码中,我们使用 $cookie 实例化 yii\web\Cookie 类来设置 Cookie。add() 方法将 Cookie 添加到响应对象的 cookie 集合中。

您可以随时修改 Cookie 的值和属性,只需更新 $cookie 对象即可。例如:

// 修改 Cookie
$cookie = Yii::$app->response->cookies->get('mycookie');
$cookie->value = 'Hello, Yii2!';

Yii::$app->response->cookies->add($cookie);

在使用 get() 方法获取 Cookie 对象后,我们可以修改其值,接着将其重新添加到 cookie 集合中。

获取 Cookie

通过 Yii::$app->request->cookies 属性访问请求对象的 cookie 集合。您可以使用该集合获取客户端传递的 cookie。

下面是在 Yii2 中获取 Cookie 的示例:

// 获取 Cookie
$cookieValue = Yii::$app->request->cookies->getValue('mycookie');

echo $cookieValue;

在上面的代码中,我们使用 getValue() 方法从请求对象的 cookie 集合中获取 Cookie 的值。如果 Cookie 不存在,则返回 null

删除 Cookie

通过 yii\web\Cookie::expire 属性将 Cookie 删除。设置 cookie 的 expire 值为当前时间将删除 cookie。

下面是在 Yii2 中删除 Cookie 的示例:

// 删除 Cookie
$cookie = Yii::$app->response->cookies->get('mycookie');
$cookie->expire = time() - 3600;

Yii::$app->response->cookies->add($cookie);

在上面的代码中,我们使用 get() 方法获取 Cookie 对象,接着设置 expire 属性为过去时间来删除 cookie。然后将 cookie 对象重新添加到 cookie 集合中。

结论

在 Yii2 中,设置 Cookie 非常方便。您可以使用 $cookie = new \yii\web\Cookie() 实例化 yii\web\Cookie 类来设置 Cookie。使用 Yii::$app->response->cookies 属性访问响应对象的 cookie 集合。

在将 Cookie 添加到响应对象的 cookie 集合中后,只需使用 Yii::$app->request->cookies 属性访问请求对象的 cookie 集合即可获取 Cookie。如果要删除 Cookie,只需将 Cookie 的 expire 属性设置为过去时间。