如何获得cookie的到期时间

当我创build一个cookie时,如何获得cookie的expire time

非常感谢。

这很难实现,但cookie的有效期可以在另一个cookie中设置。 这个cookie可以在稍后被读取以获得到期date。 也许有更好的办法,但这是解决你的问题的方法之一。

把一个编码的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 ); 

那么当你下次得到你的cookie时:

 $cookie = json_decode( $_COOKIE[ "cookiename" ] ); 

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

 $expiry = $cookie->expiry; 

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

 $data = $cookie->data; $value1 = $cookie->data->value1; 

等等。我发现这是一个更好的使用cookies的方法,因为你可以在你想要的其他对象中embedded尽可能多的小对象!

您可以设置您的包含有效期的cookie值,并从cookie值得到您的到期日。

 // set $expiry = time()+3600; setcookie("mycookie", "mycookievalue|$expiry", $expiry); // get if (isset($_COOKIE["mycookie"])) { list($value, $expiry) = explode("|", $_COOKIE["mycookie"]); } 

//记住,在这种情况下,一些双向encryption将更安全。 请参阅: https : //github.com/qeremy/Cryptee

当你通过PHP创build一个cookie时,默认值为0,从手册:

如果设置为0或省略,则cookie将在会话结束时过期(当浏览器closures时)

否则,您可以将秒生存时间设置为第三个参数:

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

但是,如果你的意思是要获得一个已经存在的cookie的剩余生命周期,我担心这是不可能的(至less不是直接的)。

要获取cookies过期时间,请使用这个简单的方法。

 <?php //#############PART 1############# //expiration time (a*b*c*d) <- change D corresponding to number of days for cookie expiration $time = time()+(60*60*24*365); $timeMemo = (string)$time; //sets cookie with expiration time defined above setcookie("testCookie", "" . $timeMemo . "", $time); //#############PART 2############# //this function will convert seconds to days. function secToDays($sec){ return ($sec / 60 / 60 / 24); } //checks if cookie is set and prints out expiration time in days if(isset($_COOKIE['testCookie'])){ echo "Cookie is set<br />"; if(round(secToDays((intval($_COOKIE['testCookie']) - time())),1) < 1){ echo "Cookie will expire today."; }else{ echo "Cookie will expire in " . round(secToDays((intval($_COOKIE['testCookie']) - time())),1) . " day(s)"; } }else{ echo "not set..."; } 

?>

您需要将第1部分和第2部分保存在不同的文件中 ,否则每次都会得到相同的过期date。