Partage
  • Partager sur Facebook
  • Partager sur Twitter

Securiser mon formulaire mais foreach pose problem

Sujet résolu
    28 juillet 2015 à 20:35:25

    Bonjour a tous,

    J'aimerai sécurisé mon formulaire ci dessous cependant j'ai des difficultés (je suis debutant php) j'aimerais verifier les champs dans mes foreach avec des conditions. Mais comme mes inserts sont dans mes foreach ca pose probleme. J'aimerai verifier les champs de ma boucle codepromo avant de commencer les inserts...

    Voici mon code :

    if(isset($_SESSION['user']))
          {
        
                          
                                foreach ($_POST['cat'] as $categorie)
                                { 
                                  if ($categorie['prix'] || $categorie['nombre_places'] < 0)
                                  {
                                    $categorie['prix'] = abs($categorie['prix']); # code...
                                    $categorie['nombre_places'] = abs($categorie['nombre_places']);
                                    
                                    addCategorie($bdd, $categorie['nom_categorie'], $categorie['prix']);
                                    $categories[$bdd->lastInsertId()] = $categorie['nombre_places'];
                                  }
                                  else
                                  {
                                    addCategorie($bdd, $categorie['nom_categorie'], $categorie['prix']);
                                    $categories[$bdd->lastInsertId()] = $categorie['nombre_places'];
                                  }
                                }
    
                                addAdresse($bdd, $numrue, $rue, $ville, $codepostal);
                                $adrid = $bdd->lastInsertId();
                                
                                addLieu($bdd, $salle, $adrid);
                                $evlieuid = $bdd->lastInsertId();
    
                                addEvenement($bdd, $date1, $nom, $interid, $evlieuid);
                                $evid = $bdd->lastInsertId();
               
                                foreach ($_POST['code'] as $codepromo)
                                {
                                  if ($codepromo['reduc'] || $codepromo['place'] < 0)
                                  {
                                    $codepromo['reduc'] = abs($codepromo['reduc']); # code...
                                    $codepromo['place'] = abs($codepromo['place']);
                                    
                                    addCode($bdd, $codepromo['nom_code'], $codepromo['reduc'], $codepromo['place'], $evid);
                                  }
                                  else
                                  {
                                    addCode($bdd, $codepromo['nom_code'], $codepromo['reduc'], $codepromo['place'], $evid);
                                  }
                                }
    
                                foreach ($categories as $cat_id => $cat_nb_place)
                                {   
                                  addEvcat($bdd, $evid, $cat_id, $cat_nb_place);
                                } 
                              
                                success("L'événement à bien été enregistré.");
    
                }
                else
                {
                  error("erreur merci de reessayer");
                }



    Merci de votre aide

    -
    Edité par thibaudfezfef 28 juillet 2015 à 20:45:09

    • Partager sur Facebook
    • Partager sur Twitter
      28 juillet 2015 à 20:43:39

      Yep,

      sécurisé, vérifié, euh contrôler qu'il y ai une valeur dans ton tableau $codepromo ?

      • Partager sur Facebook
      • Partager sur Twitter
        28 juillet 2015 à 20:46:08

        J'aimerai verifier que les champs rentré dans le tableau code promo et tableau categorie soit des chiffres par exemple donc la condition isnumeric par exemple etc .. et je suis perdu ou le placer ?

        car si je les places dans le foreach il va quand meme passer dans toute les fonction precedente et commencer a insert dans la bdd.. car ce ne sont que des inserts mes fonctions

        -
        Edité par thibaudfezfef 28 juillet 2015 à 20:49:31

        • Partager sur Facebook
        • Partager sur Twitter
          28 juillet 2015 à 20:57:39

          J'ai bon là :

          foreach ($_POST['code'] as $codepromo)
                                      {
          foreach ($codepromo as $valeur)
          { if isNumeric($valeur) {
            $isNumeric=true;
           } else
           {
           $isNumeric=false;
           break;
           }
          }
          if $isNumeric
           if ($codepromo['reduc'] || $codepromo['place'] < 0)
                                        {
                                          $codepromo['reduc'] = abs($codepromo['reduc']); # code...
                                          $codepromo['place'] = abs($codepromo['place']);
                                           
                                          addCode($bdd, $codepromo['nom_code'], $codepromo['reduc'], $codepromo['place'], $evid);
                                        }
                                        else
                                        {
                                          addCode($bdd, $codepromo['nom_code'], $codepromo['reduc'], $codepromo['place'], $evid);
                                        }
                                      }
           

           Désolé mais le Maj +Entrée ne fonctionne plus pour l'édition du code, c'est une catastrophe.

          J'ai empiré la situation en voulant l'arranger , c'est une grande catastrophe , désolé 

          -
          Edité par mattabile 28 juillet 2015 à 21:04:08

          • Partager sur Facebook
          • Partager sur Twitter
            28 juillet 2015 à 21:01:08

            Ok tu peux me l'expliquer le code ? et aussi dans mes deux foreach j'ai un nom qui lui est une chaine de caractere et les deux autres champs obligatoirement des chiffres

            Break il signifie quoi ici

            -
            Edité par thibaudfezfef 28 juillet 2015 à 21:01:32

            • Partager sur Facebook
            • Partager sur Twitter
              28 juillet 2015 à 21:06:35

              break signifie d’arrêter la boucle .

              Pour chaque valeur de $codepromo si $codepromo est numérique je mets true, sinon je mets false et je m'arrete.

              -
              Edité par mattabile 28 juillet 2015 à 21:08:10

              • Partager sur Facebook
              • Partager sur Twitter
                28 juillet 2015 à 21:08:02

                Ouai mais si je fais tout ca dans mon tableau code promo il va faire tout mes insert d'avant ...
                • Partager sur Facebook
                • Partager sur Twitter
                  28 juillet 2015 à 21:10:38

                  Euh oui, je n'ai traité que le tableau des codes promo, pour les catégories le principe est le même.

                  mmm tu ne me dis pas tout j'ai l'impression

                  -
                  Edité par mattabile 28 juillet 2015 à 21:11:47

                  • Partager sur Facebook
                  • Partager sur Twitter
                    28 juillet 2015 à 21:12:49

                    ba j'ai mis mon code sur le post..

                    Je veux verifier mes tableau avant les insert simplement.. entre la ligne 2 et 5

                    -
                    Edité par thibaudfezfef 28 juillet 2015 à 21:13:14

                    • Partager sur Facebook
                    • Partager sur Twitter
                      28 juillet 2015 à 21:23:48

                      Ok alors parcours TOUS tes tableaux entre la ligne 2 et 5 et pour chaque champ tu controles et tu fais un tableau pour savoir si tu insères ou pas.

                      Ensuite tu reparcours TOUS les tableaux et en fonction du tableau de controle tu inséres ou non.

                      Donc vouloir mettre sa vérification absolument en ligne 2 à 5 , c'est lourd dingue.

                      De plus on est d'accord que si une des valeurs n'est pas numérique (reduc ou place par exemple) il ne faut pas faire d'insert du codepromo,  donc l'algo entre la ligne 2 et 5 :-°

                      -
                      Edité par mattabile 28 juillet 2015 à 21:26:33

                      • Partager sur Facebook
                      • Partager sur Twitter
                        28 juillet 2015 à 21:31:18

                        Justement je demande conseil.. Je veux pas specialement faire comme ca.

                        Je veux juste verifier mes champs avec des conditions avant ma partie ou j'insere dans la bdd.. Comme ca si un champs est numérique dans le tableau code promo par exemple jpeux faire un else pour ne pas inserer quoi que ce soit dans la bdd car j'ai pas que le code pomo et categorie  j'ai aussi d'autre champs que j'insere et comme j'ai des clé etrangeres etc je peux pas changer l'ordre des inserts

                        • Partager sur Facebook
                        • Partager sur Twitter
                          28 juillet 2015 à 21:42:45

                          Mais mon poulet ,

                          ce code je viens de le donner (certes pas très lisible)  avec son algo en Français , certes juste pour les codes mais le principe est le même pour les autres tableaux.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            28 juillet 2015 à 21:55:52

                            Oui deja merci ^^. Mais ce code je peux le mettre avant la ligne 5 sans probleme ?

                             le probleme c'est que j'ai que 3 champs dans ma boucle et je veux en verifier que 2 si ils sont numeric

                            -
                            Edité par thibaudfezfef 28 juillet 2015 à 21:58:11

                            • Partager sur Facebook
                            • Partager sur Twitter
                              28 juillet 2015 à 22:03:39

                              Et non, il fonctionne (ou pas) parce qu'il est dans ton premier foreach des codepromos et je refais un foreach pour accéder directement au valeur et les controler.

                              EN ligne 5 , il faut faire un copier coller de tout ton code et au lieu d'insérer , tu controles chaque champ et tu mets dans un tableau si tu dois l'insérer ou pas.

                              Et après dans les foreach déjà écrit tu t'appuies sur ce tableau de controle pour savoir avant insertion si tu insères ou pas. Donc tu remarques que ce ne sera pas possible d'insérer du code en ligne 5 sans modiflier de toute façon ton code déjà existant.

                              Donc la ligne 5, c'est une belle contrainte que tu te mets tout seul d'ailleurs. Qu'est ce qui te fixe cette idée à la ligne 5 ?

                              • Partager sur Facebook
                              • Partager sur Twitter
                                28 juillet 2015 à 22:07:31

                                Je veux controler mes variables avant mon bloc, car si je verifie mon tableau apres mes inserts ca sert a rien car la bdd va se remplir pour rien (tout mon bloc d'insert a la ligne 5 a 51) c'est mon formulaire de creation d'un evenement. C'est con de faire tout les insert et apres de pas écrire dans la bdd parce que le code promo nest pas bien écris ou ne respecte pas ce que je veux. Ca va me creer mon evenement sans le code promo et c'est pas le but..
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  28 juillet 2015 à 22:10:07

                                  je veux faire mes if else etc et des que tout les champs sont vérifié alors on insert. Si c'est pas bon on arrete avant d'inserer ..

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    28 juillet 2015 à 22:10:52

                                    Thibaud , le code que j'ai donné contrôle le tableau avant son insert.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      28 juillet 2015 à 22:12:02

                                      oui mais ca c'est avant ;)

                                      addAdresse($bdd, $numrue, $rue, $ville, $codepostal);
                                                                  $adrid = $bdd->lastInsertId();
                                                                   
                                                                  addLieu($bdd, $salle, $adrid);
                                                                  $evlieuid = $bdd->lastInsertId();
                                       
                                                                  addEvenement($bdd, $date1, $nom, $interid, $evlieuid);
                                                                  $evid = $bdd->lastInsertId();


                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        28 juillet 2015 à 22:17:12

                                        Allo Thibaud !  mon code ne concerne que le tableau des codespromos pour le tableau du haut c'est le même principe.

                                        Pour ce qu' il y a au milieu c'est à dire le code que tu as mis , vu que ce n'est pas un tableau , forcément c'est pas le même principe.

                                        Quelles solutions magiques attends-tu si ce n'est faire des if  ?

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          28 juillet 2015 à 22:20:29

                                          Tu ne comprend pas ma demande...

                                          Ce que j'éssai de t'expliquer (mon code avec les if else est deja fait pour les ligne addadresse addlieu et addevenement) c'est que je peux pas verifier les champs du tableau code promo juste avant d'inserer dedans car ca voudrait dire que tout ce qui est au dessus a deja été traité dont le insert dans addAdresse, lieu et evenement sauf que je ne veux pas que ces inserts soit fait si le code promo est pas valide tu comprend ? je veux pas inserer dans ma base tout sauf le code promo parce que une certaine personne a mi un lettre a la place d'un chiffre.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                            28 juillet 2015 à 22:31:23

                                            Mais alors regarde ta demande

                                            thibaudfezfef a écrit:

                                            J'aimerai verifier que les champs rentré dans le tableau code promo et tableau categorie soit des chiffres par exemple donc la condition isnumeric par exemple etc .. et je suis perdu ou le placer ?

                                            car si je les places dans le foreach il va quand meme passer dans toute les fonction precedente et commencer a insert dans la bdd.. car ce ne sont que des inserts mes fonctions

                                            -
                                            Edité par thibaudfezfef il y a environ 1 heure


                                            la validité d'un codepromo influe sur les autres insertions et cette phrase  "car si je les places dans le foreach il va quand meme passer dans toute les fonction precedente et commencer a insert dans la bdd.. car ce ne sont que des inserts mes fonctions" est censé me le dire.

                                            C'est quoi la règle on insère une partie en BD ou rien du tout ou ça dépend . Fais un algo en Français de ce que tu veux avec:

                                            si les champs reduc et places du codeprom (parce que je devine que le nom_code n'est pas forcément numérique) son pas numériques alors je n'insère rien , si les champs A,B,C des catégories sont alphanumériques alors  etc ....

                                            Comment veux-tu qu'on y arrive si tu ne me dis pas tout ?

                                            mattabile a écrit:

                                            Euh oui, je n'ai traité que le tableau des codes promo, pour les catégories le principe est le même.

                                            mmm tu ne me dis pas tout j'ai l'impression

                                            -
                                            Edité par mattabile il y a environ 1 heure



                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              28 juillet 2015 à 22:38:05

                                              Bon on se le fait cet algo ou je me déco
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                28 juillet 2015 à 22:51:14

                                                oki, je regarde des sites pour adultes en attendant :waw:
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  28 juillet 2015 à 22:54:57

                                                  Si les champs codepromo['reduc'] et codepromo['place'] sont empty mais que les champs categorie['place'] et categorie ['nombre'] sont numerique

                                                  alors on fait un insert dans la bdd mais sans inserer dans table codepromo

                                                  sinonSi les champs codepromo['reduc'] et codepromo['place'] sont bien numeric mais aussi que les champs categorie['place'] et categorie ['nombre'] sont numerique

                                                  on insert dans la bdd avec code promo

                                                  sinon

                                                  erreur pas d'insert

                                                  Et avant tout ca j'ai deja mes if else pour verifier mes champs qui ne sont pas dans ma boucle for eache ^^ normal.. c'est vraiment ces boucles a verifier qui me posent probleme

                                                  -
                                                  Edité par thibaudfezfef 28 juillet 2015 à 23:00:55

                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    28 juillet 2015 à 23:11:43

                                                    A mon tour

                                                    Si categorie['place'] et categorie['nombre']sont tous numeric alors 

                                                       Si les champs codepromo['reduc'] et codepromo['place'] sont vides alors

                                                         on insère les catégories,l'adresse, le lieu et l'évènement

                                                       Sinon lon insère les catégories,l'adresse, le lieu et l'évènement

                                                    mmm je trouve qu'il y a beaucoup de et , es tu sur qu'il n'y a pas de ou dans l'algo

                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      28 juillet 2015 à 23:15:42

                                                      Donc ton code initial tu premier post a changé, faut me le donner mon poulet sinon je vais pas le deviner.

                                                      Faut te tirer les vers du nez ...

                                                      -
                                                      Edité par mattabile 28 juillet 2015 à 23:16:01

                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        28 juillet 2015 à 23:18:01

                                                        mattabile a écrit:


                                                             on insère les catégories,l'adresse, le lieu et l'évènement

                                                           Sinon lon insère les catégories,l'adresse, le lieu et l'évènement


                                                        Tu veux dire sinon on insere tout ? a la deuxieme ligne

                                                        Si il y a des ou ^^


                                                        -
                                                        Edité par thibaudfezfef 28 juillet 2015 à 23:19:07

                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          28 juillet 2015 à 23:19:25

                                                          Si categorie['place'] et categorie['nombre']sont tous numeric alors 

                                                                              Si les champs codepromo['reduc'] et codepromo['place'] sont vides alors

                                                                                    on insère les catégories,l'adresse, le lieu et l'évènement

                                                                              Sinon on insère les codepromos, les catégories,l'adresse, le lieu et l'évènement

                                                          Désolé, c'est bon cet algo c'est ca qu'on veut ou alors ils sont où les OU

                                                          -
                                                          Edité par mattabile 28 juillet 2015 à 23:20:34

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            28 juillet 2015 à 23:20:48

                                                            mattabile a écrit:

                                                            Si categorie['place'] et categorie['nombre']sont tous numeric alors 

                                                               Si les champs codepromo['reduc'] et codepromo['place'] sont vides alors

                                                                 on insère les catégories,l'adresse, le lieu et l'évènement

                                                               Sinon lon insère les catégories,l'adresse, le lieu et l'évènement


                                                            A quel moment j'insere codepromo ^^

                                                            mattabile a écrit:

                                                            Donc ton code initial tu premier post a changé, faut me le donner mon poulet sinon je vais pas le deviner.

                                                            Faut te tirer les vers du nez ...

                                                            -
                                                            Edité par mattabile il y a 4 minutes

                                                            Pas compris quest ce que tu veux ?

                                                            -
                                                            Edité par thibaudfezfef 28 juillet 2015 à 23:21:23

                                                            • Partager sur Facebook
                                                            • Partager sur Twitter

                                                            Securiser mon formulaire mais foreach pose problem

                                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                            • Editeur
                                                            • Markdown