Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/05/2006, 17h07   #1
Invité de passage
 
Inscription : mai 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 3
Points : 0
Points : 0
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 !!!
boubsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 17h39   #2
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
Je ne suis pas sur que cette syntaxe soit valable :
Code :
1
2
 $item = 'item['.$_boutique_nb_articles.']';
$_SESSION[$item] =
En effet ca revient a avoir :
Code :
si $_boutique_nb_articles = 2;
Code :
$_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.
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 19h03   #3
Invité de passage
 
Inscription : mai 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 3
Points : 0
Points : 0
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 ?
boubsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 19h19   #4
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Et avec:

Code :
1
2
$item = '$item['.$_boutique_nb_articles.']'; 
$_SESSION[$item] = array($_SESSION['$tb_boutique_current_article_id'],$_SESSION
?
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/05/2006, 23h30   #5
Membre habitué
 
Homme Nicolas BUI
Consultant CRM
Inscription : mai 2006
Messages : 99
Détails du profil
Informations personnelles :
Nom : Homme Nicolas BUI
Âge : 35
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 : 145
Points : 145
Envoyer un message via Skype™ à nicolas.bui
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 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/05/2006, 16h49   #6
Invité de passage
 
Inscription : mai 2006
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 3
Points : 0
Points : 0
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 !!!
boubsa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h44.


 
 
 
 
Partenaires

Hébergement Web