Cookie 辅助函数
Cookie 辅助函数文件包含协助处理 Cookie 的相关函数。
加载此辅助函数
使用以下代码加载此辅助函数:
<?php
helper('cookie');
可用函数
提供以下函数:
- set_cookie($name[, $value = ''[, $expire = 0[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = false[, $httpOnly = false[, $sameSite = '']]]]]]]])
- 参数:
$name (
array|Cookie|string) -- Cookie 名称 或 包含所有可用参数的关联数组 或CodeIgniter\Cookie\Cookie实例$value (
string) -- Cookie 值$expire (
int) -- 过期前的秒数。如果设置为0,Cookie 仅在浏览器打开期间有效$domain (
string) -- Cookie 域名(通常为:.yourdomain.com)$path (
string) -- Cookie 路径$prefix (
string) -- Cookie 名称前缀。如果设置为'',则使用 app/Config/Cookie.php 中的默认值$secure (
bool) -- 是否仅通过 HTTPS 发送 Cookie。如果设置为null,则使用 app/Config/Cookie.php 中的默认值$httpOnly (
bool) -- 是否对 JavaScript 隐藏 Cookie。如果设置为null,则使用 app/Config/Cookie.php 中的默认值$sameSite (
string) -- SameSite Cookie 参数的值。如果设置为null,则使用 app/Config/Cookie.php 中的默认值
- 返回类型:
void
备注
在 v4.2.7 之前,由于一个 bug,
$secure和$httpOnly的默认值为false, app/Config/Cookie.php 中的这些值从未被使用。此辅助函数提供了更友好的语法来设置浏览器 Cookie。 有关其使用的描述,请参阅 Response 库, 因为该函数是
CodeIgniter\HTTP\Response::setCookie()的别名。备注
此辅助函数仅将浏览器 Cookie 设置到
Services::response()返回的全局 Response 实例中。因此,如果你创建并返回另一个 Response 实例(例如,如果你调用redirect()), 此处设置的 Cookie 将不会自动发送。
- get_cookie($index[, $xssClean = false[, $prefix = '']])
- 参数:
$index (
string) -- Cookie 名称$xssClean (
bool) -- 是否对返回值应用 XSS 过滤$prefix (
string|null) -- Cookie 名称前缀。如果设置为'',将使用 app/Config/Cookie.php 中的默认值。如果设置为null,则不使用前缀
- 返回:
Cookie 值,如果未找到则返回 null
- 返回类型:
mixed
备注
自 v4.2.1 起,引入了第三个参数
$prefix,由于 bug 修复,行为发生了一些变化。详情请参阅 升级。此辅助函数提供了更友好的语法来获取浏览器 Cookie。 有关其使用的详细描述,请参阅 IncomingRequest 库, 因为该函数与
CodeIgniter\HTTP\IncomingRequest::getCookie()的行为非常相似, 不同之处在于它还会在 app/Config/Cookie.php 文件中你设置的Config\Cookie::$prefix前面加上前缀。警告
使用 XSS 过滤是一种不良实践。它不能完全防止 XSS 攻击。建议在视图中使用正确
$context的esc()函数。
- delete_cookie($name[, $domain = ''[, $path = '/'[, $prefix = '']]])
- 参数:
$name (
string) -- Cookie 名称$domain (
string) -- Cookie 域名(通常为:.yourdomain.com)$path (
string) -- Cookie 路径$prefix (
string) -- Cookie 名称前缀
- 返回类型:
void
允许你删除一个 Cookie。除非你设置了自定义路径或其他值, 否则只需要 Cookie 的名称即可。
<?php delete_cookie('name');
此函数在其他方面与
set_cookie()完全相同,只是 它没有value和expire参数。这也只是将用于删除 Cookie 的浏览器 Cookie 设置到
Services::response()返回的全局 Response 实例中。备注
当你使用
set_cookie()时, 如果value设置为空字符串且expire设置为0,则 Cookie 将被删除。 如果value设置为非空字符串且expire设置为0,则 Cookie 仅在浏览器打开期间有效。你可以在第一个参数中提交一个值数组, 也可以设置离散的参数。
<?php delete_cookie($name, $domain, $path, $prefix);
- has_cookie(string $name[, ?string $value = null[, string $prefix = '']])
- 参数:
$name (
string) -- Cookie 名称$value (
string|null) -- Cookie 值$prefix (
string) -- Cookie 前缀
- 返回类型:
bool
检查在
Services::response()返回的全局 Response 实例中 是否存在指定名称的 Cookie。这是CodeIgniter\HTTP\Response::hasCookie()的别名。