本文目录导读:

在PHP项目中配置Cookie有效期,主要有以下几种方式:
使用 setcookie() 函数
// 语法:setcookie(name, value, expire, path, domain, secure, httponly)
// 示例1:设置过期时间为1小时后
setcookie('username', 'john', time() + 3600);
// 示例2:设置过期时间为7天后
setcookie('user_token', 'abc123', time() + (7 * 24 * 3600));
// 示例3:设置过期时间为30天后
setcookie('remember_me', 'yes', time() + 30 * 24 * 3600);
常见时间单位换算
// 各种常见有效期
$expires = [
'1小时' => time() + 3600,
'1天' => time() + 86400,
'7天' => time() + 604800,
'30天' => time() + 2592000,
'1年' => time() + 31536000,
'会话结束' => 0 // 浏览器关闭时删除
];
使用 setrawcookie() 函数
// 如果需要对cookie值进行特殊编码,可以使用setrawcookie
setrawcookie('raw_cookie', rawurlencode('特殊字符'), time() + 86400);
高级配置示例
// 完整的cookie配置 $cookie_name = 'session_id'; $cookie_value = session_id(); $expire = time() + 86400; // 24小时后过期 $path = '/'; // 整个网站可用 $domain = 'example.com'; // 指定域名 $secure = true; // 仅HTTPS传输 $httponly = true; // 禁止JavaScript访问 setcookie($cookie_name, $cookie_value, $expire, $path, $domain, $secure, $httponly);
使用会话变量设置cookie
// 如果使用session,可以设置session的cookie生命周期
ini_set('session.cookie_lifetime', 86400); // 24小时
session_start();
// 或者在php.ini中永久配置
session.cookie_lifetime = 86400
删除cookie
// 将过期时间设置为过去的时间
setcookie('username', '', time() - 3600);
// 或者使用0作为时间
setcookie('username', '', 0);
注意事项
时间戳问题
- Cookie的过期时间是基于服务器的Unix时间戳
- 使用
time()函数获取当前时间戳 - 不要直接使用日期字符串,除非经过
strtotime()转换
// 错误示例
setcookie('test', 'value', '2024-12-31'); // 不会按预期工作
// 正确示例
setcookie('test', 'value', strtotime('2024-12-31'));
浏览器cookie限制
- 浏览器通常限制每个域名下的cookie数量(约50个)
- 单个cookie大小限制约4KB
- 不同浏览器行为可能略有差异
安全建议
// 敏感信息cookie
setcookie('token', $secure_token, [
'expires' => time() + 86400,
'path' => '/',
'domain' => 'example.com',
'secure' => true, // 仅HTTPS
'httponly' => true, // 防止XSS攻击
'samesite' => 'Strict' // 防止CSRF攻击(PHP 7.3+)
]);
实际应用示例
// 记住密码功能
function setRememberMeCookie($user_id) {
$token = bin2hex(random_bytes(32)); // 生成安全令牌
$expiry = time() + (30 * 24 * 3600); // 30天
setcookie('remember_token', $token, $expiry, '/', '', true, true);
setcookie('user_id', $user_id, $expiry, '/', '', true, true);
// 将token存储到数据库
saveRememberToken($user_id, $token);
}
// 检查cookie是否过期
if(isset($_COOKIE['remember_token'])) {
// cookie仍然有效
validateRememberToken($_COOKIE['user_id'], $_COOKIE['remember_token']);
}
选择合适的有效期取决于你的应用需求:记住登录状态通常设置为7-30天,临时数据设置几个小时,敏感信息可以考虑设置更短的有效期。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播