PHP Cookies

2025年4月17日 | 阅读 5 分钟

PHP Cookies 是服务器用于识别用户和保存多次连续连接状态信息的小块数据。用户认证、偏好设置管理以及会话处理是 PHP Cookies 的主要功能。

Cookie 由服务器计算机生成,并传输到客户端 Web 浏览器。客户端的每次服务器请求都包含 Cookie,这使得服务器能够检索保存的数据。Cookie 的功能是创建和保留用户登录信息,同时保存用户的选择,并记录用户浏览网页的方式。

简而言之,Cookie 可以在服务器端创建、发送和接收。

注意:PHP Cookie 必须在 <html> 标签之前使用。

PHP Cookies 的工作原理

cookies in php

PHP 将 Cookie 作为其 编程 环境中的基本元素,用于支持会话持久性和用户跟踪等功能。PHP 脚本会激活 setcookie() 函数,该函数会指示浏览器接收 HTTP 标头,以命令 Cookie 存储。Cookie 标头包含必需的组件,其中包括其名称、值信息、到期时间规范以及可选的附加功能。

只要 Cookie 未过期或未从存储中移除,浏览器就会保留它存储的 Cookie,直到域名收到后续请求。$_COOKIE 超全局数组允许服务器访问检索到的 Cookie 数据,从而能够根据存储的信息动态生成响应。

PHP setcookie() 函数

PHP setcookie() 函数用于通过 HTTP 响应设置 Cookie。设置 Cookie 后,您可以通过 $_COOKIE 超全局变量访问它。

语法

参数

$name 变量规定了必需的 Cookie 名称。value 参数包含与 Cookie 相关的所有存储信息。存储数据何时过期取决于 $expire 参数的值,该参数默认为 0,表示会话结束。Cookie 通过 $path 参数定义的目录可访问。设置 domain 参数时,您将确定 Cookie 所属的域名。

$secure 参数仅在连接使用安全的 HTTPS 连接时才启用 Cookie 的传输。当开发人员将 $httponly 设置为 true 时,安全可确保客户端 JavaScript 无法访问 Cookie。这可以保护 Cookie 数据的真实性。

示例

setcookie() 函数的一些常见示例包括

让我们通过其他示例来更好地理解。

示例 1

输出:(下次加载页面时)

CookieValue

说明

该示例创建了名为“CookieName”的 Cookie,其值为“CookieValue”。由于未指定时间,此 Cookie 将作为基于会话的 Cookie,在浏览器窗口关闭时终止。可以通过 $_COOKIE["CookieName"] 检索相同的值。

示例 2

输出:(如果在 1 小时内访问)

TPointTech

说明

该脚本创建一个名为“Username”的 Cookie,其值为“TPointTech”,并将其设置为在 1 小时后过期(从当前系统时间起 3600 秒)。time() 函数检索当前 Unix 时间戳,再加上 3600 秒后,将在 1 小时内生效,之后由浏览器自动删除。

示例 3

输出:(安全请求在 24 小时内)

12345

说明

名为“SessionID”的会话 Cookie 包含值“12345”,其过期时间设置为 24 小时(86400 秒)。该应用程序包含域名和路径限制,以及通过 HTTPS 进行安全的需要,还有一个标志可防止第三方 JavaScript 尝试修改 Cookie。通过将 $httponly 标志设置为 true 来实现安全增强,这可以阻止 JavaScript 访问 Cookie。

PHP $_COOKIE

PHP $_COOKIE 超全局变量用于获取 Cookie。

语法

示例

示例 1

文件:cookie1.php

文件:cookie1.html

示例

立即执行

输出

Sorry, cookie is not found!

输出:(刷新页面后)

Cookie Value: Sam

说明

在脚本初始执行期间,即使“user”Cookie 未被访问,它也会被创建,显示“抱歉,找不到 Cookie!”。浏览器会将保存的 Cookie 发送给服务器,通过 $_COOKIE["user"] 可访问,并显示“Cookie 值:Sam”。

示例 2

文件:cookie2.php

文件:cookie2.html

示例

立即执行

输出:(初始加载)

Selected Theme: Not set yet

输出:(刷新后)

Selected Theme: dark

说明

Theme Cookie 设置了 24 小时的过期计时器。空合并运算符 (??) 允许在使用 Cookie 不可用时使用默认值。

PHP 删除 Cookie

将任何 Cookie 的到期时间设置为早于当前时间,将触发浏览器 PHP Cookie 的删除。这会导致浏览器删除该 Cookie。

示例

请参见下面的 PHP 删除 Cookie 的示例

示例 1

文件:delcookie1.php

文件:delcookie.html

示例

立即执行

输出

Profile cookie deleted.

说明

“profile”Cookie 的过期时间比当前时间早一个小时,因此浏览器会自动删除该 Cookie,而 isset() 会验证其是否已被删除。

示例 2

立即执行

输出:(刷新后)

Session cleared.

说明

“session”Cookie 被设置,然后通过将其过期值设置为早于当前时间的值立即删除。

结论

PHP Cookies 提供了一个高级数据管理系统,可帮助应用程序开发人员构建交互式 Web 平台。 Web 开发人员可以通过 setcookie() 函数实现安全的 Cookie 创建,该函数允许他们定义过期日期、路径规则以及安全设置,而 $_COOKIE 超全局变量则提供了检索此数据的有效方法。

Cookie 的主要目的是在 HTTP 的无状态操作与需要持久状态信息的 Web 体验之间建立联系。


下一个主题PHP Session