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 :

Problème de duplication de variables session


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Problème de duplication de variables session
    Bonjour,

    Dans le cadre du développement d'une petite boutique en ligne, j'ai un soucis lorsque j'ajoute un article à mon panier : en effet, je place chaque article en session (plus le total commandé et le nombre d'article) et tout se passe bien, sauf que si je reste quelques secondes (à la louche une trentaine de secondes) sans naviguer sur le site, et qu'ensuite je reprends ma navigation, les derniers éléments placés en session ont été dupliqués !

    Je n'y comprends rien...

    Voici le code d'ajout d'un article (item) et de màj des compteurs :



    $_boutique_nb_articles = isset($_SESSION['boutique_nb_articles']) ? $_SESSION['boutique_nb_articles'] : 0;
    $_boutique_total_articles = isset($_SESSION['boutique_total_articles']) ? $_SESSION['boutique_total_articles'] : 0;

    $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : '';
    if($action == "ajout") {
    //echo "ajout";
    // incrémentation du compteur d'articles en panier
    $_boutique_nb_articles++;
    $_SESSION['boutique_nb_articles'] = $_boutique_nb_articles;
    // mise à jour du total du panier
    $_boutique_total_articles = $_boutique_total_articles + $_SESSION['tb_boutique_current_article_prix'];
    $_SESSION['boutique_total_articles'] = $_boutique_total_articles;
    // mémorisation de l'article ajouté
    $item = 'item['.$_boutique_nb_articles.']';
    $_SESSION[$item] = array($_SESSION['$tb_boutique_current_article_id'],$_SESSION['tb_boutique_current_article_nom'],$_SESSION['tb_boutique_current_article_prix'],1);

    }

    Je suis vraiment désespéré, je ne trouve d'où ça peut venir... Merci d'avance de votre aide !!!

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Je ne suis pas sur que cette syntaxe soit valable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     $item = 'item['.$_boutique_nb_articles.']';
    $_SESSION[$item] =
    En effet ca revient a avoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    si $_boutique_nb_articles = 2;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['item[2]']=....;
    Je ne suis pas sur que les caractere '[' et ']' soit validde dans une clef.

    par exemple mettre un '|' dans le nom d'une variable de sessioin fait planter PHP. il est possible que cela vienne de la aussi.

    Essaye en mettant un autre nom en tant que cle pour voir si cela fonctionne.

    C'est juste une hypothese.
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci de ta réponse stunti

    Bah les crochets c'est parque "item" est un tableau... Si c'était ces crochets qui posaient pb, cela voudrait dire que l'on ne peut pas passer en session une variable de type array ?

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Et avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $item = '$item['.$_boutique_nb_articles.']'; 
    $_SESSION[$item] = array($_SESSION['$tb_boutique_current_article_id'],$_SESSION
    ?

  5. #5
    Membre habitué
    Homme Profil pro
    Consultant CRM
    Inscrit en
    Mai 2006
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant CRM
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 99
    Points : 147
    Points
    147
    Par défaut
    Le meilleur moyen c'est de debugger ..
    <?php

    $_SESSION[ 'index[2]' ] = "TXTXT";
    print_r( $_SESSION ); // ou vardump( $_SESSION );

    ?>
    car en php, tu peux foutre n'importe koi comme clef associatif
    Nicolas BUI

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    En fait, le problème ne vient de la syntaxe : vu que je ne m'en sortais pas avec mon code, j'ai utilisé un autre code tout fait pour la gestion d'un panier... et j'ai toujours le même comportement :

    - lors de l'ajout d'un item au panier, tout se passe bien
    - si je navigue, le panier m'affiche toujours le bon nombre d'articles etc
    - lorsque j'arrête de naviguer (à partir de 15s d'inactivité) mon item est à nouveau ajouté au panier
    - cet "ajout automatique" ne s'est pas fait en passant par la fonction d'ajout (j'ai mis un echo pour vérifier l'utilisation de cette fonction) !!!
    - il semble qu'il y ait donc une sorte de duplication des variables mises en session à partir d'une quinzaine de secondes d'incativité...
    - j'ai ce comportement en développement (local), et sur le serveur de mon hébergeur

    Je n'ai absolument aucune idée de l'origine de ce bug, je suis perdu...

    Merci d'avance de votre aide !!!

Discussions similaires

  1. Problème de création de variable session
    Par twitch dans le forum Langage
    Réponses: 19
    Dernier message: 07/08/2012, 17h41
  2. Variable session non retenue / problème sur Firefox
    Par hatembr dans le forum Langage
    Réponses: 10
    Dernier message: 25/04/2007, 17h22
  3. Problème de récuperation des variables de session
    Par paradeofphp dans le forum ASP.NET
    Réponses: 10
    Dernier message: 02/03/2007, 15h40
  4. Réponses: 4
    Dernier message: 20/06/2006, 13h12
  5. [xmlrad]problème avec la variable session
    Par ekmule dans le forum XMLRAD
    Réponses: 5
    Dernier message: 22/02/2006, 13h22

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