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 :

[Sécurité] Probleme insertion dans un tableau de session pour un Panier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut [Sécurité] Probleme insertion dans un tableau de session pour un Panier
    Bonjour,
    je vous expose mon problème :

    - j'ai une premiere page ou j'affiche une liste de produit
    - chaque produit possede un lien ajouter qui retourne son ID
    - pour l'instant je fixe la quantité a 1
    - quand on clique sur ajouter la page se recharge en envoyant l'ID du produit pour la stocker dans la session (cette partie se trouve tout en haut du code) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?
    session_start();
     
    if ($_GET['ajout'] == "AJOUT"){
        $qteart = 1;
        $idart = $_GET['id'];
        }
    $_SESSION['achats']=array("id"=>$id, "qte"=>$qteart);
    ?>

    - ensuite dans une autre page j'essaie de vérifier la liste contenu dans mon "panier"
    - j'utilise le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?
    session_start();
    for ($i=0; $i < count($_SESSION['achats']); $i++){
        $article = $_SESSION['achats']['id'];
        $quantite = $_SESSION['achats']['qte'];    
        echo $article.'-'.$quantite.'<br>';
    }
    ?>

    - mais final j'ai seulement l'ID article du dernier produit ajouté et pas autant de fois que j'ai ajouté de produit, ce qui me donne par exemple si j'ai mis trois produits ayant pour ID : 141,142 et 146 que j'insère dans cet ordre :
    146-
    146-

    si quelqu'un pouvait me guider

  2. #2
    Membre du Club
    Inscrit en
    Juin 2004
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 100
    Points : 64
    Points
    64
    Par défaut
    Moi tous ce que je te conseil pour ce genre de programme c'est d'utiliser une base de donnée car la tu ne va garder aucune trace de ce qui a été fait ou alors tu l'enregistreras a la fin ce qui est bien plus compliqué...
    A chaque fois que tu cliques sur ajouter, tu mets dans ta base de donnée ....

    Par contre il te faudra aussi faire un script qui te permettra de nettoyer ta base de donnée de temps en temps , donc tu rajoutes une date ou quelque chose dans le genre.

    Autrement pour ta session je ne distingue pas le problême désolé

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    on m'impose des choses donc il faut que fasse d'abord tout en session et apres quand le panier sera valider faudra le mettre dans la BD

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Lors de l'initialisation de la session de l'utilisateur, tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['achats'] = array();
    puis quand tu ajoutes, tu fais ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $_SESSION['achats'][] = array("id"=>$id, "qte"=>$qteart);
    Enfin, pour afficher ton panier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach ($_SESSION['achats'] as $article){
        echo $article['id'].'-'.$article['qte'].'<br>';
    }
    Hope this helps

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    J'ai suivi tes conseils mais ca ne fonctionne pas encore,
    dans mon code j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?
    session_start();
    $_SESSION['achats'] = array();
    ?>
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?
    if ($_GET['ajout'] == "AJOUT"){
    	$qteart = 1;
    	$idart = $_GET['id'];
    	}
    $_SESSION['achats'][]=array("id"=>$id, "qte"=>$qteart);
    ?>
    et dans la page d'affichage du panier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    session_start();
    foreach ($_SESSION['achats'] as $article){
        echo $article['id'].'-'.$article['qte'].'<br>';
    }
    ?>
    mais maintenant il écrit seulement le dernier ID de produit sans le 1 de la quantité, exemple :
    146-

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    avant le foreach, que donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var_dump('<pre>',$_SESSION,'</pre>');
    ???

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    j'obtiens le resultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    string(5) "
     
    "
    array(1) {
      ["achats"]=>
      &array(1) {
        [0]=>
        array(2) {
          ["id"]=>
          string(3) "141"
          ["qte"]=>
          NULL
        }
      }
    }
    string(6) "
     
    " 141-
    (excuse moi pour les balises)

  8. #8
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    pourrais-tu utiliser les balises [code ] s'il te plait, ca sera plus lisible

  9. #9
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Au fait, dans ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($_GET['ajout'] == "AJOUT"){
       $qteart = 1;
       $idart = $_GET['id'];
       }
    $_SESSION['achats'][]=array("id"=>$id, "qte"=>$qteart);
    C'est normal que tu ajoutes au tableau en dehors de ton if ???

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    en faisant comme tu as dit et en remplacant $id par $idart, les deux solutions mon donné le résultat suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string(5) "
     
    "
    array(1) {
      ["achats"]=>
      &array(0) {
      }
    }
    string(6) "
     
    "

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    en fait j'ai trouvé une partie de mon problème, il fallait mettre mode a la place de ajout, car quand je passe les variables dans l'adresse, j'ai .php?mode=AJOUT, désolé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_GET['mode'] == "AJOUT"){
    sinon il ne m'affiche que l'id et la quantité du dernier produit ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    string(5) "
     
    "
    array(1) {
      ["achats"]=>
      &array(1) {
        [0]=>
        array(2) {
          ["id"]=>
          string(3) "141"
          ["qte"]=>
          int(1)
        }
      }
    }
    string(6) "
     
    " 141-1

  12. #12
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    remontre ton code.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    1 - Ouverture de la session
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?
    session_start();
    $_SESSION['achats'] = array();
    ?>
    2 - envoi du mode par le lien "Ajouter au panier"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?mode=AJOUT&categorie=<? echo $categorie;?>&famille=<? echo $cat['ARZoneAlpha1'];?>&id=<? echo $cat['IDARTICLE'];?>&qte=1">Ajouter au Panier</a>
    3 - Vérification du mode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?
    if ($_GET['mode'] == "AJOUT"){
    	$qteart = 1;
    	$idart = $_GET['id'];
    	$_SESSION['achats'][]=array("id"=>$idart, "qte"=>$qteart);
    }
    ?>
    4 - Affichage du panier dans une autre page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?
    session_start();
    var_dump('<pre>',$_SESSION,'</pre>');
    foreach ($_SESSION['achats'] as $article){
        echo $article['id'].'-'.$article['qte'].'<br>';
    }
    ?>

  14. #14
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Que donne ceci, quand tu ajoutes plusieurs articles au panier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?
    if ($_GET['mode'] == "AJOUT"){
       $qteart = 1;
       $idart = $_GET['id'];
       var_dump('<pre>',$_SESSION,'</pre>'); 
       $_SESSION['achats'][]=array("id"=>$idart, "qte"=>$qteart);
    }
    ?>

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    au premier article j'ai ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string(5) "
     
    "
    array(1) {
      ["achats"]=>
      &array(0) {
      }
    }
    string(6) "
     
    "
    au deuxieme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string(5) "
     
    "
    array(1) {
      ["achats"]=>
      &array(0) {
      }
    }
    string(6) "
     
    "
    au troisieme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    string(5) "
     
    "
    array(1) {
      ["achats"]=>
      &array(0) {
      }
    }
    string(6) "
     
    "

  16. #16
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    ben voilà... c'est clair non ?
    Tu effaces à chaque fois ton panier de session.
    Le problème vient du code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?
    session_start();
    $_SESSION['achats'] = array();
    ?>
    Ce code ne doit être executer qu'une seule fois, lorsque l'utilisateur s'identifie par exemple.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 159
    Points : 54
    Points
    54
    Par défaut
    merci beaucoup

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

Discussions similaires

  1. Probleme Insertion dans BDD avec dbaccess
    Par Mobybic dans le forum Bases de données
    Réponses: 4
    Dernier message: 08/03/2011, 20h14
  2. Réponses: 1
    Dernier message: 21/11/2009, 15h06
  3. probleme d'insertion dans un tableau (WMI)
    Par sono77 dans le forum VBScript
    Réponses: 5
    Dernier message: 22/04/2008, 18h09
  4. probleme insert dans une bd access
    Par ocean24 dans le forum JDBC
    Réponses: 1
    Dernier message: 14/09/2006, 18h44
  5. Réponses: 4
    Dernier message: 26/06/2006, 16h16

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