2010-05-15 5 views
2

Est-il possible de lire l'heure d'expiration des cookies avec PHP? Quand je print_r($_COOKIE) il Sorties:Obtenir l'expiration des cookies

Array 
(
    [PHPSESSID] => 0afef6bac83a7db8abd9f87b76838d7f 
    [userId] => 1232 
    [userEmail] => [email protected] 
    [firstName] => user 
    [lastName] => user 
) 

Je pense donc que $_COOKIE n'ont pas le temps d'expiration, est-il possible avec une autre fonction?

+0

question connexe: http://stackoverflow.com/questions/2802760 – Gumbo

Répondre

5

Seuls le nom et la valeur sont envoyés au serveur afin qu'aucune autre donnée de cookie ne soit disponible.

Vous pouvez simplement redéfinir le cookie si vous voulez prolonger sa durée - c'est juste quelques octets de plus dans la réponse, donc ce n'est pas grave du tout.

+2

ce qui signifie aucun moyen d'obtenir expiration du cookie ... –

+1

non il n'y a pas. Ce que je fais personnellement, c'est enregistrer l'heure d'expiration dans une base de données et avoir le cookie ont une sorte d'identifiant. Habituellement, pour sauvegarder les détails de connexion, le cookie est seulement l'identifiant (un nom long et aléatoire qui ne peut être deviné). Si le client (hypothétiquement) a envoyé l'heure d'expiration, vous ne devriez pas l'utiliser de toute façon, car il aurait pu être tempéré. – Artefacto

1

non, il n'y a aucun moyen.
Le navigateur utilise uniquement les paramètres de cookie (chemin, expiration, etc.) pour déterminer si un cookie doit être envoyé ou non, mais aucun de ces paramètres n'est renvoyé au serveur.

ne pas considérer un cookie comme un membre du tableau $ _SESSON mais comme un en-tête HTTP. Cela aide toujours.

0

Ou vous pouvez utiliser la fonction time() sur la valeur du cookie, de cette façon vous avez besoin d'un seul cookie et pouvez récupérer des données. Le code php ressemblerait à ceci:

setCookie('cookiename', time(), time() + 86400);

De cette façon, vous aurez le cookie qui expire en un jour, et en récupérant sa valeur, vous pouvez découvrir quand ça va expirer avec quelque chose comme ceci:

86400 - (time() - $_COOKIE['cookiename']);