setcookie() 是 PHP 中用于设置 cookie 的函数。
Cookie 是在客户端(通常是 Web 浏览器)存储的小型数据片段,用于跟踪用户的会话信息、首选项等。
setcookie() 函数用于在服务器发送 HTTP 标头中设置一个或多个 cookie。
语法
setcookie(name, value, expire, path, domain, secure, httponly);
参数
name
(必需):指定要设置的 cookie 的名称。value
(可选):指定要设置的 cookie 的值。如果未指定值,则默认为NULL
。expire
(可选):指定 cookie 的过期时间。这是一个 Unix 时间戳,指定 cookie 的到期日期和时间。默认情况下,cookie 的过期时间是用户会话结束时(浏览器关闭)。path
(可选):指定 cookie 可以访问的路径。如果设置了路径,则只有位于该路径下的页面才能访问该 cookie。默认情况下,cookie 在设置它的目录及其所有子目录中可用。domain
(可选):指定 cookie 的域。如果设置了域,该域及其子域中的所有页面都可以访问该 cookie。默认情况下,cookie 仅在设置它的域中可用。secure
(可选):布尔值,指定是否仅通过 HTTPS 连接发送 cookie。默认值为false
,表示可以通过 HTTP 连接发送。httponly
(可选):布尔值,指定是否限制 cookie 仅通过 HTTP 协议访问,而不允许客户端脚本(如 JavaScript)访问。这有助于减少跨站点脚本(XSS)攻击的风险。默认为false
。
domain参数说明
域名是互联网上标识实体(通常是服务器)的字符串。它由一系列标签组成,这些标签通过点号 .
分隔。例如,域名 example.com
包含两个标签,example
和 com
。
当 domain
参数为空时,意味着该 cookie 仅限于设置它的当前域名。
例如,如果您在 example.com
上设置了一个 domain
为空的 cookie,那么只有 example.com
下的页面才能访问该 cookie,而 subdomain.example.com
或 example.net
下的页面则无法访问。
如果要使 cookie 在整个域名下的页面都可用,可以将 domain
参数设置为顶级域名,例如 .example.com
。这样做将使 cookie 在 example.com
以及其所有子域(如 subdomain.example.com
)下的页面都可用。
path参数说明
1、设置在整个域名下都可用的 cookie
// 设置一个名为 “user” 的 cookie,值为 “John”,过期时间为 1 小时,整个域名下的所有页面都可访问
setcookie(“user”, “John”, time()+3600, “/”);
2、设置在特定目录下可用的 cookie:
// 设置一个名为 “language” 的 cookie,值为 “en”,过期时间为 1 小时,只有 “/docs” 路径下的页面可访问
setcookie(“language”, “en”, time()+3600, “/docs”);
3、设置在子目录中可用的 cookie
// 设置一个名为 “theme” 的 cookie,值为 “dark”,过期时间为 1 小时,只有 “/docs/articles” 路径下的页面可访问
setcookie(“theme”, “dark”, time()+3600, “/docs/articles”);