Comment obtenir le temps d'expiration du cookie

Lorsque je crée un cookie, comment obtenir le cookie expire time?

Merci beaucoup.

49
demandé sur Yi Jiang 2010-11-17 12:52:41

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.

44
répondu Thariama 2012-09-17 10:44:11

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!

78
répondu Braikar 2012-09-02 08:17:02

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

9
répondu K-Gun 2013-04-29 15:08:57

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).

6
répondu Hannes 2013-03-19 19:16:28

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.

0
répondu Pedro Sousa 2014-09-12 15:14:12