Cookie 助手
Cookie 助手文件包含用于处理 Cookie 的函数。
加载此助手
此助手使用以下代码加载
<?php
helper('cookie');
可用函数
以下函数可用
- set_cookie($name[, $value = ''[, $expire = ''[, $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
) – 是否将 cookie 隐藏在 JavaScript 中。如果为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。有关其用法的描述,请参阅 响应库,因为此函数是
CodeIgniter\HTTP\Response::setCookie()
的别名。注意
此辅助函数只是将浏览器 cookie 设置到
Services::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
,并且由于错误修复,行为略有改变。有关详细信息,请参阅 升级。此辅助函数为您提供了更友好的语法来获取浏览器 cookie。有关其用法的详细说明,请参阅 IncomingRequest 库,因为此函数与
CodeIgniter\HTTP\IncomingRequest::getCookie()
的行为非常相似,只是它还会在您可能在 app/Config/Cookie.php 文件中设置的Config\Cookie::$prefix
前面添加前缀。警告
使用 XSS 过滤是一种不好的做法。它不能完美地防止 XSS 攻击。建议在视图中使用
esc()
和正确的$context
。
- 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()
返回。注意
当您使用
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
检查全局响应实例中是否存在名为 $name 的 cookie,该实例由
Services::response()
返回。这是CodeIgniter\HTTP\Response::hasCookie()
的别名。