Destruction impossible des cookies.
disachlorane
Messages postés
5
Statut
Membre
-
disachlorane Messages postés 5 Statut Membre -
disachlorane Messages postés 5 Statut Membre -
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 :
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 :
J'ai essayé ça en php :
Après vérification par
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
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 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, es-tu certain que ton code n'a pas recréé les cookies?-
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.- 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); ?>
- 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é ? - 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.
-