Aller au contenu

Cookie TROP implanté !


Sujets conseillés

Posté

Et oui, trop implanté en référence à mon post sur les 'cookies non implantés !'

Ma question : Que se passe t il quant un cookie expire ? je m'explique :

J'implante un cookie, durée de vie 60 secondes

:

 $refresh=$_SERVER["REMOTE_ADDR"]." - ".$tps; 
$ttl   = time()+60; // forcé à 60 secondes
header("P3P: policyref=\"http://www.site.fr/p3p.xml\",CP=\"NON DSP COR CURa PSA PSD OUR BUS NAV STA\"");
setcookie("refresh", $refresh, $ttl, "/", "site.fr",0);

Après 60 seconde, que renvoie un :

 if (!empty($_COOKIE["refresh"]));

Normalement, pour moi, il devrait renvoyer 'false', si le cookie à expiré.

He bé non, chez moi, c'est 'true'.

Un ptit toyo serais le bienvenu.

Par avance merci.

Posté

je crois que vous devriez essayer un isset plutot qu'un empty...mais je n'en metterai pas ma mains au feux non plus car le cookie existe tout en étant périmé

Posté

Merci de ta reponse

J'ai essayé, mais le problème est ailleurs, car le contenu du cookie est lu, même après les 60 secondes. Le problème est lié à la durée elle même qui ne semble pas prise en compte, va savoir pourquoi...

Posté

Je ne vois pas d'où vient ton problème :blink:

mais tu pourrais le contourner en faisant par exemple :

$refresh=$_SERVER["REMOTE_ADDR"]." - ".$tps."//$$".time()+60;
$ttl   = time()+60; // forcé à 60 secondes
header("P3P: policyref=\"http://www.site.fr/p3p.xml\",CP=\"NON DSP COR CURa PSA PSD OUR BUS NAV STA\"");
setcookie("refresh", $refresh, $ttl, "/", "site.fr",0);

$chars = preg_split('!//$$!',$_COOKIE["refresh"]);
$t=time();
if($chars[1]>$t){
echo 'Cookie périmé!';
}
else
{
echo 'Cette fois il est vraiment pas périmé!';
}

Posté

Merci Theo,

C'est une bonne idée pour contourner, mais j'aime pas les trucs qui doivent marcher et qui marchent pas !

Je me pose une question : Qui est ce qui 'decide' de l'expiration du cookie ? le poste client, ou le serveur qui va le lire ? Parce que si c'est le poste client, et que son horloge n'est pas pas synchrone avec le serveur, cela pourrait expliquer...

Mais ça m'étonnerai que ça marche comme ça !

Posté

C'est sur le poste client que le cookie est donc c'est lui qui le supprime...

Mais de toutes façon que son horloge soit où non déréglée n'a aucun effet sur la durée puisque time() retourne l'heure le temps qui s'est écoulé depuis le 1er janvier 1970 00:00:00 GMT...

C'est très bizarre ton problème

Posté (modifié)

Bon, je desespère...

En désespoir de cause, j'utilise ton astuce Theo B, mais ça m'inquiete assez, car j'utilise des cookies à tour de bras, avec des durées jusqu'a 6 mois, et j'espère que les autres (qui sont batis sur le même modele), n'ont pas le même problème !

Merci quand même, ça permet à mon script de tourner !

Modifié par lorik

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...