2012-11-16 126 views
3

更新cookie值而不更改其到期日期?更新cookie值而不更改其到期日期?

$c = $_COOKIE["count"]; 
$c++; 
if (isset($_COOKIE["count"])) { 
    setcookie("count", $c); 
} 
else 
{ 
    setcookie("count", $c, time() + 86400, '/'); 
} 
+1

不可能,因爲沒有「更新」一個cookie的東西,它也不可能接收剩餘的ttl。你可以做艱難的sereialize你的數據和ttl並將它們保存爲價值,然後你可以閱讀它們並相應地設置新的ttl和數據 – Hannes

回答

2

更新cookie值而不更新其到期日期的唯一方法是將到期日期本身添加到值中;這是因爲瀏覽器只會向您發送Cookie的名稱和值。

if (isset($_COOKIE['count'])) { 
    list($exp, $val) = explode('|', $_COOKIE['count'], 2); 
    ++$val; 
} else { 
    $exp = time() + 86400; 
    $val = 1; 
} 
setcookie('count', "$exp|$val", $exp, '/'); 
+0

不工作:((( –

+0

@UZSTYLEGROUP)你必須先清除任何存在的cookie,因爲格式會發生變化 –

+0

好的,現在嘗試 –

0

你不能 - PHP doen't知道什麼時候該cookie將到期也不劑量的JavaScript(除非你複製的到期時間 cookie的內容)。

0

您可以保存其他cookie中的有效日期。當你更新你的cookie時,只需從它讀取到期日期並在更新中使用它。