推荐使用 setcookie() 函数设置 Cookie,需在任何输出前调用,必填 name 和 value 参数,生产环境应配置 expires、path、domain、secure、httponly、samesite 等安全选项以防范 XSS 和 CSRF。

在 PHP 中设置 Cookie,推荐使用 setcookie() 函数,并通过其参数精确控制 Cookie 的行为。关键在于理解每个参数的含义和常见组合用法,避免因遗漏安全参数导致隐患。
基础语法与必填参数
setcookie() 最简调用需提供名称和值,且必须在任何输出(包括空格、HTML、echo)之前执行:
-
name:Cookie 名称(如
'user_id') -
value:字符串值(建议用
urlencode()编码特殊字符) - 其他参数可省略,但生产环境不建议
有效期与作用路径(path/domain)
第三个参数是过期时间(Unix 时间戳),设为 0 或省略表示会话级 Cookie(关闭浏览器即失效);设为未来时间则持久化:
- 例如
time() + 3600表示 1 小时后过期 -
path:指定 Cookie 生效路径,默认为当前目录(如
'/'表示全站有效) -
domain:指定域名(如
'.example.com'支持子域名共享)
安全标志:secure、httponly、samesite
现代 Web 必须启用安全选项:
立即学习“PHP免费学习笔记(深入)”;
- secure = true:仅通过 HTTPS 传输(部署到线上必须开启)
- httponly = true:禁止 JavaScript 访问(防 XSS 窃取)
-
samesite:防止 CSRF,可选
'Strict'、'Lax'(推荐)、'None'(需同时设 secure)
完整示例(PHP 7.3+ 推荐写法)
以下是一条安全、兼容性好的 Cookie 设置语句:
setcookie('session_token', $token, [
'expires' => time() + 86400,
'path' => '/',
'domain' => '.example.com',
'secure' => true,
'httponly' => true,
'samesite' => 'Lax'
]);
注意:数组形式参数自 PHP 7.3 起支持,更清晰易维护;旧版本需按顺序传参,且 samesite 需手动拼入 header()。



















