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] Session en double


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Par défaut [Cookies] Session en double
    Bonjour,
    J'ai un petit problème avec mes sessions...
    Mon site fonctionne avec une page d'index permettant une identification par login et password. Une fois l'utilisateur authentifié une session est créée.

    Tout fonctionne correctement dans 95% des cas...Mais il arrive parfois que 2 fichiers de session concernant le même utilisateur existe. Ce qui fait que quelque soit le lien sur lequel il clic, il est rejeté.

    Voici le bout de code que j'utilise sur ma page d'index concernant les sessions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    session_start();
    $_SESSION = array();
    if (isset($_COOKIE[session_name()])) {
        setcookie(session_name(), '', time()-42000, '/');
    }
    session_destroy();
    C'est un bout de code que j'ai récupéré. Je ne suis pas sûr de son efficacité.
    Mon problème vient peut-être de là...
    Que me conseilleriez-vous pour éviter toute duplication de fichier de session?

    Merci.

  2. #2
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Rien a voir avec ta question, mais ça :

    setcookie(session_name(), '', time()-42000, '/');
    T'es sur que ça a vraiment un sens ? parce que si je ne m'abuse dans ma traduction, ça veut dire "le cookie expire dans (date du jour - 1 er janvier 1970 - 4200) secondes" ou encore "le cookie expire dans un délais correpondant au temps écoulé depuis le 1/1/1970 - 4200 secondes"... Et je doute que ça soit ce que tu ai voulu faire !

    Ensuite, je ne vois pas le rapport entre le fait qu'un utilisateur ai 2 sessions ouvertes et le fait qu'il ne puisse plus cliquer nul part... Peux tu être plus précis ?

  3. #3
    Membre éclairé Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Par défaut
    Lorsqu'il y a 2 sessions pour l'utilisateur Toto par exemple:
    Lorsque l'utilisateur clic sur un lien vers la page liste.php. Cette page (comme toute les autres) vérifie l'existence de la session avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    session_start();
    // Vérification de l'autorisation
        if (!$_SESSION["membre"]) {
           // Si l'utilisateur n'est pas autorisé il est reconduit
           // sur le formulaire d'identification
           header("Location: index.php");
           die();
        }
    La variable $_SESSION["membre"] est mise à 'true' lors de la création de la session.
    Donc s'il y a 2 sessions l'autentification echoue. Je ne sais pas pour quelle raison. Et donc l'utilisateur est renvoyé à la page d'index.

    En ce qui concerne le code de la page d'index, j'avoue avoir récupérer ce code sans chercher en détails son fonctionnement. Ma préoccupation étant de tuer la session d'un utilisateur qui serait déjà connecté afin d'éviter le problème que j'ai en ce moment à savoir, d'avoir plusieurs sessions pour un utilisateur.

  4. #4
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    Le morceau de code que tu nous montre ne doit pas poser de problème, même avec 2 sessions ouvertes.

    peux tu montrer le code de création de la session ?

    et il se passe quoi si tu vires ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $_SESSION = array(); // $_SESSION est deja un tableau
    if (isset($_COOKIE[session_name()])) { // tu te ressert de ton cookie apres ?
        setcookie(session_name(), '', time()-42000, '/');
    }
    session_destroy(); // tu perds ta session la

  5. #5
    Membre éclairé Avatar de nicoaix
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2004
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2004
    Messages : 571
    Par défaut
    Je ne peux pas retirer cette partie de code pour voir ce qui se passe dans la mesure où mon site web est une application web actuellement en production...
    Donc si ça pose des problèmes de connexion je vais me retrouver avec tous les utilisateurs sur le dos...

    En ce qui concerne la création de la session elle se fait avec ce code:
    <?PHP
    session_start
    ();
    @
    $login = $_POST['login'];
    @
    $mdp = $_POST['mdp'];

    //Vérification du login et password
    $sql = "SELECT * FROM user WHERE login like '".$login."' AND pwd = '".md5($mdp)."'";
    $query = mysql_query($sql) or die ("Impossible d'exécuter la requête : ".$sql);
    $num = mysql_num_rows($query);

    if (
    $num == 1)
    {
    //Récupération de données de l'utilisateur
    @$id = mysql_result($query,0,'id');
    @
    $login_base = mysql_result($query,0,'login');
    @
    $nom = mysql_result($query,0,'nom');
    @
    $poste = mysql_result($query,0,'poste');
    @
    $mail = mysql_result($query,0,'mail');
    @
    $division = mysql_result($query,0,'division');
    @
    $code = mysql_result($query,0,'code');
    @
    $niveau = mysql_result($query,0,'niveau');
    @
    $pas = mysql_result($query,0,'pas');
    @
    $flag = mysql_result($query,0,'flag');
    @
    $acces_admin = mysql_result($query,0,'acces_admin');
    @
    $compte = mysql_result($query,0,'compte');
    //L'utilisateur est autentifié => création de la session
    $_SESSION["membre"] = TRUE;
    $_SESSION["login"] = $login_base;
    $_SESSION["id"] = $id;
    $_SESSION["nom"] = $nom;
    $_SESSION["mail"] = $mail;
    $_SESSION["poste"] = $poste;
    $_SESSION["division"] = $division;
    $_SESSION["code"] = $code;
    $_SESSION["niveau"] = $niveau;
    $_SESSION["pas"] = $pas;
    $_SESSION["flag"] = $flag;
    $_SESSION["acces_admin"] = $acces_admin;
    $_SESSION["compte"] = $compte;
    if(
    $niveau == 1){
    header("Location: accueil.php");
    }else{
    header("Location: choix.php");
    }
    }
    Colorez votre code PHP sur les forums grâce à Developpez.com

  6. #6
    Membre émérite
    Inscrit en
    Mai 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 673
    Par défaut
    et il te servent a quoi les cookie ??

Discussions similaires

  1. [Cookies] Sessions qui disparaissent
    Par schnito dans le forum Langage
    Réponses: 31
    Dernier message: 22/12/2006, 12h15
  2. [Cookies] Session et sous-domaines
    Par davmaster62 dans le forum Langage
    Réponses: 14
    Dernier message: 23/03/2006, 10h12
  3. Réponses: 12
    Dernier message: 14/02/2006, 20h03
  4. [Cookies] Session object destruction failed
    Par Paganoni dans le forum Langage
    Réponses: 2
    Dernier message: 11/01/2006, 10h38
  5. Réponses: 12
    Dernier message: 24/09/2003, 16h26

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