Destruction impossible des cookies.

disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,
Voilà, une semaine après, le petit canard est toujours vivant! A la connexion d'un utilisateur, je créé les cookies comme suit :
$LOgin="newboy";
$EMail="newboy@gemolu.com";
$domain="www.monsite.com";
$clogin='login_cook';
$cemail='email_cook';
$keepconnect="keep_connect";

$stp=time();
$stamp=$stp+(int)604800; // 7 jours
$domain=$_SERVER['HTTP_HOST'];

if (!isset($_COOKIE['login_cook'])) setcookie($clogin,$LOgin,$stamp,"/",$domain,false);
if (!isset($_COOKIE['email_cook'])) setcookie($cemail,$EMail,$stamp,"/",$domain,false);
if (!isset($_COOKIE['keep_connect'])) setcookie($keepconnect,"oui",$stamp,"/",$domain,false);


Puis par sécurité, newboy peut se déconnecter et supprimer les cookies (par appel de la fonction javascript fermer_cookies() qui appelle la fonction SuppressionCookie()) comme suit :

function SuppressionCookie(nom)
{
var cookie = document.cookie;
var expireDate = new Date();

expireDate.setTime(expireDate.getTime() + (-1)*72000);

cookie = nom+"="+escape(" ")+"; expires="+expireDate.toGMTString()+"; path=/";
document.cookie = cookie;
}

function fermer_cookies()
{
SuppressionCookie('keep_connect');
SuppressionCookie('login_cook');
SuppressionCookie('email_cook');
window.location = 'index.php?disconnect=1';
}


J'ai essayé ça en php :
function close_cookies()
{
$stamp=time()-604800;
$domain=$_SERVER['HTTP_HOST'];
if (isset($_COOKIE['login_cook'])) setcookie('login_cook',"",$stamp, "/", $domain, false);
if (isset($_COOKIE['email_cook'])) setcookie('email_cook',"",$stamp, "/", $domain, false);
if (isset($_COOKIE['keep_connect'])) setcookie('keep_connect',"",$stamp, "/", $domain, false);
}

Après vérification par
if (isset($_COOKIE['login_cook'])) .....

les cookies n'apparaissent plus. Je suis en droit de penser que les cookies sont supprimés.
Mais si j'appelle MonSite dans une nouvelle fenêtre, ces bloody cookies apparaissent à nouveau.
J'ai tenté plusieurs solutions (sous Php et sous javascript). J'ai fouillé les forums du sud au nord et d'est en ouest. Toutes les solutions aboutissent au même résultat.
Ma question : hormis le grand coup de masse sur l'ordi, y a-t-il une solution viable pour tuer le petit canard ? Faudrait-il tuer la variable de session ?
Merci de votre aide car je n'ai plus d'idées

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour, es-tu certain que ton code n'a pas recréé les cookies?
0
disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour l'intérêt porté à mon problème.
Je me suis posé la question aussi. Mais la création des cookies n'a lieu qu'à la connexion avec login-name et mot de passe, et je ne repasse pas par là quand j'appelle le site dans une nouvelle fenêtre.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
comment cela se comporte quand tu testes avec ces trois pages:
creation.php
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<?php
if (setcookie('DISAC',"HLORANE",time()+604800, '/', $_SERVER['HTTP_HOST'], false))
{
	echo "cookie set OK";
}
else
{
	echo "cookie set NOK";
}
echo "<br>";
print_r($_COOKIE);
?>

suppression.php
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<?php
if (setcookie('DISAC',"",time()-604800, '/', $_SERVER['HTTP_HOST'], false))
{
	echo "cookie clear OK";
}
else
{
	echo "cookie clear NOK";
}
echo "<br>";
print_r($_COOKIE);
?>

montrer.php
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<?php
print_r($_COOKIE);
?>
0
disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour Yg_be,
Oui, ça fonctionne très bien.
J'ai donc intégré ton code php dans ma page. Et là, pffff, le petit canard est toujours vivant.
Je passe par une tuerie de cookies (qui contient ton code) et je teste immédiatement après pour constater qu'ils existent toujours.
Je vérifie l'existence des cookies dans le navigateur. Ils sont bien présents après la connexion de l'utilisateur et toujours présents après sa déconnexion qui est censée supprimer les cookies comme suit :
    
if (isset($_COOKIE['keep_connect'])) setcookie('keep_connect',"", time()-604800, '/', $_SERVER['HTTP_HOST'], false);
if (isset($_COOKIE['login_cook'])) setcookie('login_cook',"", time()-604800, '/', $_SERVER['HTTP_HOST'], false);
if (isset($_COOKIE['email_cook'])) setcookie('email_cook',"", time()-604800, '/', $_SERVER['HTTP_HOST'], false);

if (isset($_COOKIE['login_cook'])) fwrite($fd,"login_cook existe\r\n");
else fwrite($fd,"login_cook no existe\r\n");
if (isset($_COOKIE['email_cook'])) fwrite($fd,"email_cook existe\r\n");
else fwrite($fd,"email_cook no existe\r\n");
if (isset($_COOKIE['keep_connect'])) fwrite($fd,"keep_connect existe\r\n");
else fwrite($fd,"keep_connect no existe\r\n");

J'ai une information que je n'ai pas donnée; et pour cause, je n'avais pas pris conscience de son éventuelle importance : je passe par XMH pour créer mes cookies.
Je m'explique. Une fenêtre qui sert à la connexion (login et mot de passe) vient s'intégrer dans la page d'accueil. Cette fenêtre est créée en XML. Elle appelle ensuite une page qui vérifie l'existence du membre et qui créé les cookies comme décrit plus haut.
Question : le fait que les cookies sont créés en background peut-il être la raison de leur désespérante vivacité ?
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
comme tu peux le voir quand tu testes suppression.php, la variable $_COOKIE va continuer à montrer les cookies: ce n'est qu'à la visite suivante que les cookies ne seront plus présents.
par ailleurs, pourquoi n'utilises-tu pas plutôt des variables de session pour mémoriser ce informations?
0
disachlorane Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
merci yg_be. Sur ta remarque précédente, même en appelant une autre page, les cookies réapparaissaient.
J'ai creusé le problème. Comme j'ai vu que même ton code (qui est parfaitement exact) ne parvenait pas à détruire les cookies, j'ai compris qu'ils étaient indestructibles car créés en background. J'ai donc créé les cookies au retour du processus XML, directement dans la page d'accueil. Et là, la destruction a été possible. Je ferai d'autres tests car je veux comprendre.
En conclusion, le code était bon mais pas bien placé.
Merci de ton attention et de ton aide. L'idée naît de la concertation.
0