3 回答

TA贡献1966条经验 获得超4个赞
你需要在 javascript 中做到这一点。
服务器为 cookie 设置新的过期时间
执行超时的javascript
在页面上再次重新加载 1,2
// save minute before expiration
setTimeout(saveWork, (9000-60)*1000);
function saveWork(){
// do your stuff
}

TA贡献1812条经验 获得超5个赞
不可能。document.cookie 包含这样的字符串信息:
key1=value1;key2=value2;...
所以没有关于日期的任何信息。
您可以将时间过期时间传递给 javascript。一种方法是存储另一个 cookie,所以你有这个:
$expireAt = time() + 9000;
setcookie("USERNAME", $user,$expireAt);
setcookie("AUTHORID", $rec["id"],$expireAt);
setcookie("AUTH", "1",$expireAt);
setcookie("RIGHTS", $rec["rights"],$expireAt);
setcookie("EXPIREAT", $expireAt, $expireAt);
然后,这个获取 cookie 的函数:(来源)
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
并设置一个计时器:
let expireat = getCookie("EXPIREAT");
if (expireat) {
let timeAlert = Number(expireat) - 60;
setTimeout(function() {
// Do something
}, timeAlert);
}
请记住,用户可以更改 cookie 的值。

TA贡献1797条经验 获得超4个赞
使用过期时间制作额外的cookie
setcookie("expiration_time", time,time()+9000);
经过测试,这个cookie的时间
if( $_COOKIES['expiration_time'] + 60 < time() ){
//... you alert code
}
- 3 回答
- 0 关注
- 168 浏览
添加回答
举报