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()
返回)。所以,如果你创建并返回另一个响应实例(例如,如果你调用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 攻击。在视图中建议使用正确
$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
参数。这也只是为删除全局响应实例(由
Services::response()
返回)的浏览器 Cookie 设置浏览器 Cookie。备注
当你使用
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()
返回)是否存在同名的 Cookie。这是 :php:meth::CodeIgniter\HTTP\Response::hasCookie() 的别名。