Partage
  • Partager sur Facebook
  • Partager sur Twitter

Détruire un cookie et/ou une session

Sujet résolu
    28 novembre 2005 à 14:58:40

    Voilà, sur mon site je permet aux gens de choisir entre un cookie sur leur pc et une simple session provisoire.

    En gros, ils peuvent coher "oui" ou "non" sur le formulaire d'identification afin d'être reconnus (ou non) quand ils viennent sur le site.

    J'ai cela :
        $sql = "SELECT * FROM membres WHERE pseudo='$pseudo' AND pass='$pass'";
        $result = mysql_query($sql);
        $donnees = mysql_fetch_array($result);
        $nbres = mysql_num_rows($result);
       
        if ($nbres==1 AND $cookie==oui)
        {
        // on écrit un cookie et on fixe les paramètres de la session :
        setcookie("pseudo", "$pseudo", time()+3600*24*7);
        setcookie("pass", "$pass", time()+3600*24*7);
       
        $_SESSION['pseudo'] = $_COOKIE['pseudo'];
        $_SESSION['pass'] = $_COOKIE['pass'];
        }
       
        elseif ($nbres==1 AND $cookie==non)
        {
        // on fixe les paramètres de la session :
       
        $_SESSION['pseudo'] = $pseudo;
        $_SESSION['pass'] = $pass;
        }


    A priori ce sytème fonctionne bien (d'après mes tests en tout cas).

    Par contre, j'ai un soucis avec mon système de déconnection.

    Voici le code :
    // On efface le cookie :

    setcookie("pseudo", "");
    setcookie("pass", "");

    // On ferme la session du membre
    session_destroy();

    unset($_SESSION['pseudo'], $_SESSION['pass']);
    unset($_COOKIE['pseudo'], $_COOKIE['pass']);


    Et voici le message d'erreur que j'obtiens en haut de la page de déconnexion :

    Citation : MESSAGE D'ERREUR

    Warning: Cannot modify header information - headers already sent by (output started at /home/fg/www/mambre/deconnexion.php:5) in /home/fg/www/mambre/deconnexion.php on line 9

    Warning: Cannot modify header information - headers already sent by (output started at /home/fg/www/mambre/deconnexion.php:5) in /home/fg/www/mambre/deconnexion.php on line 10



    Sans compter que en plus de cela, une partie de mon css (au niveau du menu) devient mal interprété sur cette page... Alors que le menu est un include en php, exactement le même que sur les autres pages du site où tout va bien...
    • Partager sur Facebook
    • Partager sur Twitter
      28 novembre 2005 à 15:01:06

      Slu_

      Erreur banal : il doit y avoir du code (x)html avant session_start() : alors qu'il n'en faut pas !

      A+ PiNpRiCk-

      EDIT : avant setcookie() pardon :)
      • Partager sur Facebook
      • Partager sur Twitter
        28 novembre 2005 à 15:02:49

        Salut !

        Dans ton premier code vérifit d'avoir bien mit un :


        Pour le code d'en dessous utilise plutôt ceci :

        // On appelle la session
        session_start();

        // On écrase le tableau de session
        $_SESSION = array();

        // On détruit la session
        session_destroy();


        Bon après-midi :)

        Comme le dit PiNpRiCk il est possible que tu ai un code au dessus du session_start();


        Il me semble que l'erreure vient des session plutôt que des cookies, les erreures sont différentes si je m'en souvient bien.
        • Partager sur Facebook
        • Partager sur Twitter
          28 novembre 2005 à 15:11:13

          Voici en réalité tout ce que j'ai avant <head> :

          <?php
          ini_set('arg_separator.output', '&amp;');
          ini_set('url_rewriter.tags', '');
          session_start();
          echo '<?xml version="1.0" encoding="ISO-8859-1"?>';

          // On efface le cookie :

          setcookie("pseudo", "");
          setcookie("pass", "");

          // On ferme la session du membre
          session_destroy();

          unset($_SESSION['pseudo'], $_SESSION['pass']);
          unset($_COOKIE['pseudo'], $_COOKIE['pass']);

          echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
          ?>

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">


          Je viens de faire des essais...

          Même si le message d'erreur reste le même, il semble que si la personne n'a pas un cookie, elle parvient à se déconnecter correctement (destruction de la session donc).

          Par contre si on a accepté d'avoir un cookie, alors là il devient impossible de se déconnecter.

          Mon objectif c'est de pouvoir supprimer la session ou la session ET le cookie (selon qu'il y a ou non un cookie).

          PS : quand je parle du "cookie" je ne parle pas des cookies de session, mais du "vrai" cookie que le site place sur le pc...
          • Partager sur Facebook
          • Partager sur Twitter
            28 novembre 2005 à 15:14:02

            Créer une condition qui regarde si le visiteur à un cookie sur son ordinateur :)
            • Partager sur Facebook
            • Partager sur Twitter
              28 novembre 2005 à 15:28:08

              Citation : Mikiman

              Créer une condition qui regarde si le visiteur à un cookie sur son ordinateur :)



              C'est bien une idée que j'ai derrière la tête :

              • si il y a un cookie => détruire le cookie et la session.
              • si il y a juste la session => détruire la session.


              Mais cela dépasse mes compétences, lol.
              Je ne sais pas le faire (pas encore du moins ;) ).
              • Partager sur Facebook
              • Partager sur Twitter
                28 novembre 2005 à 15:42:13

                J'ai retrouvé une de mes sources :

                <?php
                $expire = 365*24*3600;

                if(isset($_COOKIE['nom'])){ }else{
                        $z = mysql_query('UPDATE compteur SET nombre=nombre+1');
                        setcookie("nom","1",time()+$expire);
                }
                ?>


                Tu peux y trouver le système pour trouver si un cookie se trouve sur l'ordinateur de la personne.

                Il s'agit de la ligne avec if(isset ...

                Bon après-midi :)

                Ce script servait de compteur de visite ^^
                • Partager sur Facebook
                • Partager sur Twitter
                  28 novembre 2005 à 16:15:11

                  Je comprend bien le système... Je fais un essai...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 novembre 2005 à 16:22:38

                    Quel intérêt d'effacer une session qui sera de toute façon détruite au moment de la déconnexion.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 novembre 2005 à 16:26:30

                      Citation : Bison

                      Quel intérêt d'effacer une session qui sera de toute façon détruite au moment de la déconnexion.



                      Quand tu parles de la "déconnexion", tu parles du moment où on va quitter le site ?
                      Il me semble qu'une session n'est détruite qu'au bout d'un petit moment (jusqu'à 2h dans certains cas, non ?).

                      Mon "cahier des charges" est que c'est le site d'une association qui doit être très sécurisé (les membres sont un peu paranos avec le Web, tout bêtement car ils n'en connaissent pas le fonctionnement).
                      Je dois donc proposer un moyen d'effacer tout moyen de se connecter derrière un membre en utilisant son PC... En effet, la plupart vont utiliser des ordinateurs partagés...
                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 novembre 2005 à 16:30:06

                        Une session est détruite au moment où on quitte le site ou dans un espace limité dans le temps qui est de 20 ou 30 minutes par défaut si mes souvenirs sont bons.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 novembre 2005 à 16:30:12

                          Citation : fg63

                          Voici en réalité tout ce que j'ai avant <head> :

                          <?php
                          ini_set('arg_separator.output', '&amp;');
                          ini_set('url_rewriter.tags', '');
                          session_start();
                          echo '<?xml version="1.0" encoding="ISO-8859-1"?>';

                          // On efface le cookie :

                          setcookie("pseudo", "");
                          setcookie("pass", "");

                          // On ferme la session du membre
                          session_destroy();

                          unset($_SESSION['pseudo'], $_SESSION['pass']);
                          unset($_COOKIE['pseudo'], $_COOKIE['pass']);

                          echo '<?xml version="1.0" encoding="ISO-8859-1"?>';
                          ?>

                          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

                          <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr">



                          Je viens de faire des essais...

                          Même si le message d'erreur reste le même, il semble que si la personne n'a pas un cookie, elle parvient à se déconnecter correctement (destruction de la session donc).

                          Par contre si on a accepté d'avoir un cookie, alors là il devient impossible de se déconnecter.

                          Mon objectif c'est de pouvoir supprimer la session ou la session ET le cookie (selon qu'il y a ou non un cookie).

                          PS : quand je parle du "cookie" je ne parle pas des cookies de session, mais du "vrai" cookie que le site place sur le pc...


                          Il faut que tu enleves le echo avant le setcookie() ou mettre les setcookie() avant le 1er echo
                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 novembre 2005 à 16:31:38

                            C'est pas plus difficile de virer le cookie sur le Pc.
                            Suffit de l'appeler par son nom.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 novembre 2005 à 16:52:52

                              Citation : Baptiste

                              Il faut que tu enleves le echo avant le setcookie() ou mettre les setcookie() avant le 1er echo



                              Bien vu !
                              Ca marche impecc' à priori !
                              Une 'tite erreur de copier/coller... C'est rvaiment le truc bête mais pénible...

                              Citation : Bison

                              Une session est détruite au moment où on quitte le site ou dans un espace limité dans le temps qui est de 20 ou 30 minutes par défaut si mes souvenirs sont bons.



                              Malheureusement les membres de l'association estiment que c'est déjà trop...
                              Il y a entre autre sur ce site des photos "très comme il faut" mais que certains membres ne veulent pas voir tomber entre les mains de leurs élèves... Et comme ils consultent le site au bahut... Faudrait pas qu'un petit malin arrive et aille se loguer sur le site juste après le départ de son prof... lol

                              Je sais, c'est rvaiment de la grosse parano... Mais je fais avec, et au moins c'est formateur pour moi.

                              Citation : Bison

                              C'est pas plus difficile de virer le cookie sur le Pc.
                              Suffit de l'appeler par son nom.


                              ??????????
                              C'est bien ce que je fais, non ?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 novembre 2005 à 17:26:38

                                En meme temps j'avais donné la réponse depuis le 2 ... enfin bon.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 novembre 2005 à 18:00:41

                                  Citation : PiNpRiCk

                                  En meme temps j'avais donné la réponse depuis le 2 ... enfin bon.



                                  Je n'avais pas lu ton edit...

                                  J'avais vu ton message avant que tu ne le fasses...
                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Détruire un cookie et/ou une session

                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                  • Editeur
                                  • Markdown