3 回答

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
你需要在 javascript 中做到這一點(diǎn)。
服務(wù)器為 cookie 設(shè)置新的過(guò)期時(shí)間
執(zhí)行超時(shí)的javascript
在頁(yè)面上再次重新加載 1,2
// save minute before expiration
setTimeout(saveWork, (9000-60)*1000);
function saveWork(){
// do your stuff
}

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
不可能。document.cookie 包含這樣的字符串信息:
key1=value1;key2=value2;...
所以沒有關(guān)于日期的任何信息。
您可以將時(shí)間過(guò)期時(shí)間傳遞給 javascript。一種方法是存儲(chǔ)另一個(gè) cookie,所以你有這個(gè):
$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);
然后,這個(gè)獲取 cookie 的函數(shù):(來(lái)源)
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 "";
}
并設(shè)置一個(gè)計(jì)時(shí)器:
let expireat = getCookie("EXPIREAT");
if (expireat) {
? let timeAlert = Number(expireat) - 60;
? setTimeout(function() {
? ? // Do something
? }, timeAlert);
}
請(qǐng)記住,用戶可以更改 cookie 的值。

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
使用過(guò)期時(shí)間制作額外的cookie
setcookie("expiration_time", time,time()+9000);
經(jīng)過(guò)測(cè)試,這個(gè)cookie的時(shí)間
if( $_COOKIES['expiration_time'] + 60 < time() ){
//... you alert code
}
- 3 回答
- 0 關(guān)注
- 210 瀏覽
添加回答
舉報(bào)