2012-01-29 6 views
1

Voici mes cookies de connexion étant misles cookies ne supprimera pas

setcookie('username[0]',$username,time()+(60*60*24*365)); 
setcookie('username[1]',$userid,time()+(60*60*24*365)); 
setcookie('username[2]',$subscribed,time()+(60*60*24*365));   
setcookie('password',md5($password),time()+(60*60*24*365)); 
setcookie('admin',$admin,time()+(60*60*24*365)); 

Voici ma fonction logout

function logout($return) { 

     setcookie('username[0]', '', time()-(60*60*24*365)); 
    setcookie('username[1]', '', time()-(60*60*24*365)); 
    setcookie('username[2]', '', time()-(60*60*24*365)); 
    setcookie('password', '', time()-(60*60*24*365)); 
    setcookie('admin', '', time()-(60*60*24*365)); 


     header('Location: ' . $return); 

    echo "<div class='fontall'><span class='fontdif'>You've been logged out. </span><a href='$return'>Click Here</a><span class='fontdif' to return</span></div>"; 

     } 

Lorsque je tente de vous déconnecter et revenir à la page que je suis toujours connecté ? Qu'ai-je fait de mal?

+0

Avez-vous actualisé la page? – xdazz

+0

oui et la page est toujours connecté. – user892134

+0

lorsque je me déconnecte, je reçois l'erreur 'impossible de modifier les en-têtes'? – user892134

Répondre

4

Si vous avez l'erreur 'impossible de modifier les en-têtes', cela signifie que vous faites un écho avant setcookie. setcookie doit faire avant que tout contenu écho.

Comme d'autres en-têtes, les cookies doivent être envoyés avant toute sortie de votre script (ce qui est une restriction de protocole). Cela nécessite que vous placiez appels à cette fonction avant toute sortie, y compris et étiquettes ainsi que tout espace.

+0

J'ai mon code de déconnexion dans une fonction. Donc je ne devrais pas mettre mon code de déconnexion dans une fonction? Il suffit de mettre le code sur une page vierge. – user892134

+0

@ user892134 Peu importe, assurez-vous que rien ne se répercute avant setcookie. – xdazz

+0

Vérifiez mon édition, je ne fais pas d'écho quoi que ce soit avant setcookie et j'ai toujours cette erreur. – user892134

0
// 1. Find the session 
    session_start(); 

    // 2. Unset all the session variables 
    $_SESSION = array(); 

    // 3. Destroy the session cookie 
    if(isset($_COOKIE[session_name()])) { 
     setcookie(session_name(), '', time()-42000, '/'); 
    } 

    // 4. Destroy the session 
    session_destroy(); 

Cela devrait fonctionner. Probablement ..u n'a pas détruit la session?

0

Rien ne semble être faux avec le code - ils devraient supprimer les cookies. Êtes-vous sûr que les cookies ne suppriment pas? Après vous être déconnecté, essayez de vérifier si les cookies existent. Vous pouvez le faire en utilisant le navigateur qui affiche les cookies actifs. Ou bien, vous pouvez essayer de lire les cookies en utilisant PHP. Deuxièmement, comment vérifiez-vous si la session est toujours valide? Pouvez-vous s'il vous plaît partager ce morceau de code? Et où vérifiez-vous votre session - les faites-vous sur toutes les pages?

Questions connexes