# 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()` 的别名。