Version complète: sur le forum Webmaster Hub : cookies indestructibles
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
rgwarrior
bonjour !

bon voila, jcommence à installer un systeme de membre sur mon site web par session et cookies ("se souvenir de moi"), et tout fonctionne très bien, sauf que lors de la deconnection, il y a impossibilité de supprimer les cookies, ce qui fait que le membre reste connecté à vie (enfin pour la durée de vie initiale donnée au cookie, cad 1an, à moins bien sur qu'il l'efface manuellement de son navigateur).
Je sais que les cookies ne sont pas supprimés parce qu'au bout de 5 jours, meme après une "deconnection", il y a tjrs la même date d'expiration smile.gif


voici le lien vers le repertoire d'essai de mon site (j'ai pas encore touché au design...):
=> http://awasagaga.free.fr/apercu/

voici le code de ma page deconnection.php (awasagaga.free.fr/apercu/script/membre/deconnection.php):

CODE
<?php
//Démarrage de la session.
session_start();

//Ensuite on vérifie que la variable $_SESSION['logged'] existe (et vaut bien true.)
if (isset($_SESSION['logged'])) //&& $_SESSION['logged'] == true
{
   session_destroy();

   //Destruction des cookies.
   setcookie("pseudo");
   setcookie("mot_passe");
  
   //Redirection.
   header("location: ../../droite.php");

}


else
{
   //On est pas connecté, alors on redirige le visiteur sur la page d'accueil.
   header("location: ../../droite.php");
}


?>



j'ai aussi essayé avec

CODE
setcookie("pseudo", "", time() - 3600, '/', ".awasagaga.free.fr");
setcookie("mot_passe", "", time() - 3600, '/', ".awasagaga.free.fr");



ou encore de désespoir:
CODE
<script type="text/javascript" language="JavaScript">
<!--

function EcrireCookie(nom, valeur)
{
var argv=EcrireCookie.arguments;
var argc=EcrireCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=nom+"="+escape(valeur)+
((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");
}

function EffaceCookie(nom)
{
date=new Date;
date.setFullYear(date.getFullYear()-1);
EcrireCookie(nom,null,date);
}




EffaceCookie("pseudo");
EffaceCookie("mot_passe");

//-->
</script>




vous auriez pas une explication rationnelle svp?
Anonymus
Bonjour,
Tu as très certainement un problème dans le 'chemin' de ton cookie.
Vérifie bien les ss-domaine/domaine/répertoire de ton cookie, il doit y avoir un conflit là dedans.
Findel
Personellement je casse mes cookies en faisant :

CODE
setcookie('pseudo', '', time(), '/');


Essai ça, si ça marche mieux
sarc
Bonjour,

L'erreur la plus fréquente avec les Cookies est l'envoi préalable de header... Une fois, je me suis cassé la tête à cause juste d'un espace au début d'un fichier de configuration, qui empêchait donc que les cookies soient supprimés. Si tu inclues la page deconnection (deconnexion en Français wink.gif) dans une page où il y avait déjà eu des données envoyées à l'ordinateur du visiteur, le cookie n'est pas implémenté. Si tu es sur EasyPHP, tu peux configurer PHP pour qu'il affiche la totalité des Warning/Error et vérifier que ce n'est pas ça.

Tu peux aussi utiliser une extension Firefox de gestion des cookies pour voir quels ont été les cookies créés par ton site, leurs valeurs, donc voir si ton programme en crée d'autres à la mauvaise adresse (comme signalé auparavant) ou ne crée vraiment rien.
rgwarrior
bon j'ai fini par trouver, anonymous avait raison (même compris avant de voir son post)
j'y avait pas pensé parce qu'il y avait un include qui boulversait toute l'arborescence (si on fait pas attention)

merci beaucoup à tous ! biggrin.gif
Rg
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.