73 votes

Comment obtenir l'heure d'expiration d'un cookie

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

Merci beaucoup.

111voto

Braikar Points 303

Mettre un json codé à l'intérieur du 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 );

puis quand tu auras ton cookie la prochaine fois :

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

vous pouvez simplement extraire l'heure d'expiration, qui a été insérée comme donnée à l'intérieur du cookie lui-même

$expiry = $cookie->expiry;

et en plus les données qui sortiront comme un objet utilisable :)

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

etc. Je trouve que c'est une façon beaucoup plus ordonnée d'utiliser les cookies, car vous pouvez emboîter autant de petits objets dans d'autres objets que vous le souhaitez !

51voto

Thariama Points 26420

Cela est difficile à réaliser, mais la date d'expiration du cookie peut être fixée dans un autre cookie. Ce cookie peut ensuite être lu plus tard pour obtenir la date d'expiration. Il existe peut-être un meilleur moyen, mais c'est l'une des méthodes permettant de résoudre votre problème.

12voto

Qeremy Points 3719

Vous pouvez définir votre valeur de 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"]);
}

// N'oubliez pas qu'un cryptage bidirectionnel serait plus sûr dans ce cas. Voir : https://github.com/qeremy/Cryptee

6voto

Hannes Points 4246

Lorsque vous créez un cookie via PHP, la valeur par défaut est 0, selon le manuel :

S'il est 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).

1voto

Pedro Sousa Points 11

Pour obtenir l'heure d'expiration des cookies, 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 garder Partie 1 et Partie 2 dans des fichiers différents sinon vous obtiendrez la même date d'expiration à chaque fois.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X