Comment obtenir le temps d'expiration du cookie
Lorsque je crée un cookie, comment obtenir le cookie expire time
?
Merci beaucoup.
5 réponses
C'est difficile à réaliser, mais la date d'expiration du cookie peut être définie dans un autre cookie. Ce cookie peut ensuite être lu plus tard pour obtenir la date d'expiration. Peut-être il ya une meilleure façon, mais c'est l'une des méthodes pour résoudre votre problème.
Mettre un JSON codé dans le cookie est ma méthode préférée, pour obtenir des données correctement formatées à partir d'un cookie. Essayez ça:
$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 );
Ensuite, quand vous obtenez votre cookie la prochaine fois:
$cookie = json_decode( $_COOKIE[ "cookiename" ] );
Vous pouvez simplement extraire l'heure d'expiration, qui a été insérée en tant que données dans le cookie lui-même..
$expiry = $cookie->expiry;
Et en outre les données qui sortiront comme un objet utilisable:)
$data = $cookie->data;
$value1 = $cookie->data->value1;
Etc. Je trouve que c'est un moyen beaucoup plus propre d'utiliser des cookies, car vous pouvez imbriquer autant de petits objets dans d'autres objets que vous le souhaitez!
Vous pouvez définir la valeur de votre cookie contenant l'expiration et obtenir votre expiration à partir de la valeur du cookie.
// set
$expiry = time()+3600;
setcookie("mycookie", "mycookievalue|$expiry", $expiry);
// get
if (isset($_COOKIE["mycookie"])) {
list($value, $expiry) = explode("|", $_COOKIE["mycookie"]);
}
// rappelez-vous, un chiffrement bidirectionnel serait plus sûr dans ce cas. Voir: https://github.com/qeremy/Cryptee
Lorsque vous créez un cookie via PHP, la valeur par défaut est 0, à partir du manuel:
Si défini sur 0, ou omis, le cookie expirera à la fin de la session (lorsque le navigateur se ferme)
Sinon, vous pouvez définir la durée de vie des cookies en secondes comme troisième paramètre:
Http://www.php.net/manual/en/function.setcookie.php
Mais si vous voulez obtenir la durée de vie restante d'un cookie déjà existant, je crains que ce ne soit pas possible (à du moins pas de manière directe).
Pour que les cookies expirent, utilisez cette méthode simple.
<?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...";
}
?>
Vous devez conserver Partie 1 et Partie 2 dans des fichiers différents , sinon vous obtiendrez la même date d'expiration à chaque fois.