IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

cookies et session [PHP 5.0]


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut cookies et session
    Bonjour,

    J'ai un petit gros soucis avec les cookies.

    En fait j'ai un bouton sur la page d'accueil qui permet de déconnecter le membre. ce lien permet d'envoyer vers une page traitement.php qui vide deux sessions et qui est censer détruire le cookie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    	setcookie('lesferias');
    	session_start();
    	$_SESSION = array();
    	header('Location: ../../index.php');
    ?>
    Si je commente le header et que je fais un echo du cookie, rien s'affiche .. il à l'air vide !

    Sur ma page index.php
    <?php
    session_start();
    echo $_COOKIE['lesferias'];
    if(!empty($_COOKIE['lesferias']))
    {
    list($id,$login) = explode('_',$_COOKIE['lesferias']);
    $_SESSION['id'] = $id;
    $_SESSION['login'] = $login;
    }
    ?>

    Là mon cookie n'est plus vide o_O

    Evidemment, je suis allez voir les cookies dans les options de google chrome et ... mon cookies est en triple avec le même nom !! La fonction setcookies('lesferias') est pas censer me vider le cookies existant ? Pourquoi il en a fait 3 ?

    Merci !

    Merci d'avance !

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Evidemment, je suis allez voir les cookies dans les options de google chrome et ... mon cookies est en triple avec le même nom !! La fonction setcookies('lesferias') est pas censer me vider le cookies existant ? Pourquoi il en a fait 3 ?
    Non, par défaut cette fonction setcookie() est plutôt destinée à créer un cookie, et c'est ce que tu fais.
    En faite, tu ne fais que le redéfinir avec une valeur vide, donc il existera encore ou sera créé s'il n'existe pas.

    Pour détruire un cookie, il faut indiquer une date inférieur à la date actuelle.
    Il ne faut pas perdre de vue qu'un cookie est destiné à être stocké dans un navigateur coté client, donc si la date d'expiration est encore valide, il sera toujours conservé et non détruit.

    Pour ce qui est de sa création en triple, il faut lire la doc concernant l'usage de cette fonction setcookie().
    La doc : setcookie()
    Il faut préciser une valeur dans le path, très certainement : / (un slash) pour qu'il soit disponible dans l'ensemble du domaine.
    Et préciser aussi le domaine : domaine.com
    -> Par défaut la valeur du path est le répertoire courant où le cookie a été défini.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list($id,$login) = explode('_',$_COOKIE['lesferias']);
    Au passage, je remarques que tu souhaites stocker plusieurs valeurs/données dans un seul cookie.
    Au lieu de créer une chaine séparée par des _ (underscore), on peu créer un tableau contenant toutes les données, puis sérialiser (ou linéariser) le tableau pour le stocker dans le cookie.
    Ensuite, lorsqu'on récupère le cookie (dans $_COOKIE), il suffit de dé-sérialiser (ou dé-linéariser) le cookie pour à nouveau ré-obtenir un tableau, ce qui est plutôt pratique.
    (D'ailleurs, ce mécanisme est effectué automatiquement coté Php au niveau des sessions (c'est automatiquement sérialisé/désérialisé), mais pas pour les cookies.)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    // A la création ou redéfinition du cookie
    $un_cookie = array('un', 'deux', 'trois');
    $un_cookie_serial = serialize($un_cookie);
    setcookie('un_cookie', $val_cookie, time()+3600, '/', 'domaine.com');
     
     
    // A la récupération du cookie (obtenir le tableau)
    $un_cookie = unserialize ($_COOKIE['un_cookie']);
    ?>
    A savoir qu'on peu créer ainsi un tableau de plusieurs dimensions.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 33
    Dernier message: 17/06/2006, 00h08
  2. [Cookies] Cookies et sessions
    Par TNorth dans le forum Langage
    Réponses: 6
    Dernier message: 19/05/2006, 01h22
  3. Réponses: 3
    Dernier message: 01/05/2006, 15h09
  4. [Cookies] PB sessions php et navigation sous imode
    Par hardkmel dans le forum Langage
    Réponses: 8
    Dernier message: 23/12/2005, 13h22
  5. [Cookies] Récupération de cookie de session...
    Par Tizard dans le forum Langage
    Réponses: 1
    Dernier message: 07/12/2005, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo