如何获取cookie的过期时间

lov*_*ove 58 php cookies

当我创建cookie时,如何获取cookie的过期时间?

小智 90

将编码的json放入cookie中是我最喜欢的方法,可以从cookie中获取正确的格式化数据.试试看:

$expiry = time() + 12345;
$data = (object) array( "value1" => "just for fun", "value2" => "i'll save whatever I want here" );
$cookieData = (object) array( "data" => $data, "expiry" => $expiry );
setcookie( "cookiename", json_encode( $cookieData ), $expiry );
Run Code Online (Sandbox Code Playgroud)

然后当你下次拿到你的cookie时:

$cookie = json_decode( $_COOKIE[ "cookiename" ] );
Run Code Online (Sandbox Code Playgroud)

您可以简单地提取到期时间,该时间作为数据插入到cookie本身中.

$expiry = $cookie->expiry;
Run Code Online (Sandbox Code Playgroud)

另外还有作为可用对象的数据:)

$data = $cookie->data;
$value1 = $cookie->data->value1;
Run Code Online (Sandbox Code Playgroud)

我发现这是一种更简洁的使用cookie的方式,因为你可以根据自己的意愿在其他对象中嵌入尽可能多的小对象!

  • 这是胜利的答案.谢谢. (4认同)

Tha*_*ama 48

这很难实现,但cookie的到期日期可以在另一个cookie中设置.然后可以稍后阅读此cookie以获取到期日期.也许有更好的方法,但这是解决问题的方法之一.

  • 是的,这就是方法.这就是微软所说的:"浏览器负责管理cookie,而cookie的过期时间和日期有助于浏览器管理其cookie存储.因此,尽管你可以读取cookie的名称和价值,但是你无法读取cookie的内容.到期日期和时间.当浏览器向服务器发送cookie信息时,浏览器不包含到期信息." http://msdn.microsoft.com/en-us/library/ms178194(v=vs.100).aspx (10认同)

K-G*_*Gun 9

您可以设置包含到期日期的cookie值,并从cookie值获得到期日期.

// set
$expiry = time()+3600;
setcookie("mycookie", "mycookievalue|$expiry", $expiry);

// get
if (isset($_COOKIE["mycookie"])) {
  list($value, $expiry) = explode("|", $_COOKIE["mycookie"]);
}
Run Code Online (Sandbox Code Playgroud)

//请记住,在这种情况下,某些双向加密会更安全.请参阅:https://github.com/qeremy/Cryptee


Han*_*nes 6

当您通过PHP创建cookie时,默认值为0,来自手册:

如果设置为0或省略,cookie将在会话结束时(浏览器关闭时)到期

否则,您可以将cookie生命周期设置为秒,作为第三个参数:

http://www.php.net/manual/en/function.setcookie.php

但是如果你的意思是获得已经存在的cookie的剩余寿命,我担心这是不可能的(至少不是直接的).