我想查看我的 cookie 过期时间。
我的代码是这样的:
setcookie('blockipCaptcha','yes',time() + (86400 * 7));
但我想在刷新页面时查看 cookie 的过期时间。这个怎么办?
除非您将该信息编码为 cookie 的一部分,否则您无法获得 cookie 到期时间(拥有此信息的浏览器不会将其发送过来)。例如:
$expiresOn = time() + (86400 * 7);
setcookie('blockipCaptcha','yes;expires=' . $expiresOn, $expiresOn);
即便如此,理论上有人可能会篡改 cookie 内容,因此您无法真正“信任”该值,除非 cookie 内容也使用HMAC进行了加密身份验证。
如何签署和验证 cookie 内容的示例:
$secretKey = ''; // this must be a per-user secret key stored in your database
$expiresOn = time() + (86400 * 7);
$contents = 'yes;expires=' . $expiresOn;
$contents = $contents . ';hmac='. hash_hmac('sha256', $contents, $secretKey);
当您取回 cookie 的内容时,剥离并验证 HMAC 部分:
$contents = $_COOKIE['blockipCaptcha'];
// I 'm doing this slightly hacky for convenience
list ($contents, $hmac) = explode(';hmac=', $contents);
if ($hmac !== hash_hmac('sha256', $contents, $secretKey)) {
die('Someone tampered with the contents of the cookie!');
}