Zend Framework - Cookie 管理



Cookie 在 Web 应用中是一个非常重要的概念。它提供了一个选项,可以在浏览器中持久保存用户数据,通常是一小段信息,并且仅保存有限的时间。

Cookie 用于维护 Web 应用的状态。Zend Framework 在 **zend-http** 组件中提供了一个 Cookie 模块。这个 zend-http 提供了 HTTP 抽象及其实现。

安装 HTTP 组件

可以使用下面的代码中指定的 **Composer** 轻松安装 HTTP 组件。

composer require zendframework/zend-http 

概念

zend-http 提供了 **Zend\Http\Cookies** 类来管理 Cookie。它与 **Zend\Http\Client** 类一起使用,后者用于向 Web 服务器发送请求。Cookie 可以像下面代码中所示那样初始化:

use Zend\Http\Cookies  
$c = new Cookies(); 

当 HTTP 客户端 (Zend\Http\Client) 首次向 Web 服务器发送 URI 请求时,它没有任何 Cookie。一旦 Web 服务器收到请求,它会在其响应对象中包含 Cookie 作为 **HTTP 头部,Set-Cookie** 并将其发送到 HTTP 客户端。HTTP 客户端将从 HTTP 响应中提取 Cookie,并在后续请求中将其作为相同的 HTTP 头部重新发送。通常,每个 Cookie 将映射到一个域和该域的路径。

**Cookies** 类中可用的方法如下:

  • **addCookie(uri)** - 用于将 Cookie 添加到给定 URI 的请求对象中。

  • **getCookie(cookieName, $cookieForm)** - 用于获取给定 URI **$uri** 中可用的 Cookie,$cookieName。第三个参数是 Cookie 的返回方式,字符串或数组。

  • **fromResponse(uri)** - 用于从给定 URI 的响应对象中提取 Cookie。

  • **addCookiesFromResponse** - 与 fromResponse 相同,但它会再次提取并将 Cookie 添加到给定 URI 的请求对象中。

  • **isEmpty()** - 用于查找给定的 **Cookie** 对象是否包含任何 Cookie。

  • **reset()** - 用于清除给定 URI 中的所有 Cookie。

在下一章中,我们将讨论 Zend Framework 中的会话管理。

广告