2011-07-13 59 views
1

只是一个简短的问题。有什么简单的方法,如何在更新时不更改cookie中的过期时间?更新cookie时保留时间

比方说,我有一个cookie设置为24小时内过期。但在同一天,我更新了几次cookie。但我仍然希望cookie在24小时后同时过期。

详细例如:

曲奇 “计数器” 应在2011年7月23日10:00到期。现在一小时后,由于某些行动,我更新了这个cookie的价值。如果我将时间设定为24小时,它将在23.07.2011 11:00到期,但我需要到期时间留在23.07.2011 10:00。

有什么简单的方法吗?只有我能想到的方法是让另一个存储过期时间的cookie,但我会发誓必须有更简单的方法,只是错过了什么?

谢谢

回答

1

而不是使用其他的cookie,你可以存储到期日期与cookie值一起

list($expire, $_COOKIE[$name]) = explode(':', $_COOKIE[$name], 2); 
setcookie($name, "$expire:$new_value", $expire); 
+0

是啊这个问题是,该cookie已经是数组,串行化为字符串。可能存在一些问题,但对于简单的Cookie肯定是个好主意! – Tom

+0

@Tom:你可以用任何字符串值来做到这一点。如果它是序列化数据,则在分割它之后将其反序列化。 – Gumbo

+0

也许我可以使用另一个分隔符,因为序列化使用“:”。我会看看它能用什么 – Tom

0

PHP(和Javascript)无法检索cookie的到期时间。只有cookie名称/值对是已知的。您确实需要在原始setcookie()调用时将原始过期存储在另一个cookie或数据库表中。在对该cookie的后续修改中,使用您存储在数据库(或其他cookie)中的过期时间。使用explode

$expire = time()+$maxage; 
setcookie($name, "$expire:$value", $expire); 

然后你就可以得到两个数据: