Breezing Forms - Ecrire dans la base en sortie de formulaire

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • #16
    Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

    juste une precision

    Quand tu initialises un formulaire :
    tu utilises l'onglet : Form Piece.
    Dans le textarea "Begin", le formulaire BF n'est pas encore construit donc tu peux encore modifier ses variables.
    Dans le textarea "End", le formulaire est deja construit, les variables ne peuvent plus etres utilisees.

    Tout ce qui est tape dans le Submit n'est pas pris en consideration.

    Lorsque tu valides un formulaire par un submit.
    Tu regardes que la partie "Submit piece".
    Dans le begin, le formulaire est encore dispo, donc tu peux encore interagir avec lui.
    Dans le end, le formulaire n'est plus dispo, donc tu ne peux plus rien prendre comme information.

    Rien n'est lu dans le form Piece.


    Les 2 onglets "Form piece" et "Submit piece" sont independants.



    Pour ta technique, j'y crois moyen. Ca ressemble plutot a une usine a gaz. De plus, si tu mets une variable dans un champ de type hidden, n'importe qui avec firebug peut modifier la variable et faire croire a ton programme ce qu'il souhaite==>dangereux comme technique.

    Dans ce cas, prends une variable de session, teste la, met la a jour, etc.... mais n'utilises pas une info qu'un homme peut changer.

    Commentaire


    • #17
      Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

      Merci pour ces détails Wismer...

      Donc en fait c'est au submit que ça pose problème ? Ce code-ci dans "soumettre des pièces" n'est donc pas bon alors ?

      $this->execPieceByName('ff_InitLib');
      global $var1 ;
      $var1 = ff_getSubmit("champ_choix_utilisateur") * 100;
      $id = JFactory::getUser()->get('id');
      $sql_update = "update ma_table set mon_champ_temporaire = '$var1' where id = $id";
      ff_query($sql_update);
      echo "!!! Ecriture var1 faite dans mon_champ_temporaire !!!";

      Commentaire


      • #18
        Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

        au niveau de ton script, il devrait fonctionner, maintenant a toi de suivre et de faire attention

        Je ferai une modification neanmoins => si $var1 doit etre un nombre
        Code PHP:
        $var1 ff_getSubmit('champ' );  
        if ( 
        is_numeric($var1))
           {
        //   toute ta programmation, au moins cela permettra de verifier que $var1 est bien un nombre et qu'il n'y aura pas autre chose
         // comme de l'injection sql.
           

        Tu peux m'expliquer ta ligne
        Code PHP:
        global $var1
        a quoi elle sert?

        Commentaire


        • #19
          Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

          au niveau de ton script, il devrait fonctionner, maintenant a toi de suivre et de faire attention
          il fonctionne en effet cependant tu as soulevé un lièvre en termes de sécurité et j'y suis très sensible... donc si cette procédure présente des failles, je la zappe directos au profit soit de ta solution de variable de session seulement j'ai toujours un soucis pour l'écriture dans ma db (mon avant dernier post) et je ne sais pas vraiment par où le faire, soit par un fichier php dans mon www (comme un listener mais appelé d'où ?) ou depuis un champ caché de ma page de remerciement, ce que j'essaye pour le moment mais qui ne fonctionne pas à part l'"Echo"...

          ...ou carrément installer un "listener" avec l'IPN mais là à condition de remplir les rubriques dont je parle précédemment... seulement comme j'ai pu lire, un "listener" est davantage nécessaire pour des post traitements plus complexes comme des suivis de commandes, gestion personnalisée des transactions (comme les "records" dans BF) etc... or moi je veux juste ajouter la valeur d'une variable à un champ de ma db donc ais-je besoin d'un "listener" juste pour ça alors que BF gère manifestement l'IPN (case à cocher dans les propriétés avancées du bouton Paypal) seulement à quel niveau le gère-t-il ? Paypal communique donc avec mon formulaire pour valider la transaction donc A PRIORI je dis bien, quand BF renvoie sur la page de remerciement, c'est que la transaction est validée et acceptée, reste à voir donc si la valeur du choix de l'utilisateur n'a pas changé illicitement en cours de route...

          tu disais qu'avec Firebug on pourrait changer cette valeur seulement comme la variable n'est chargée qu'au moment du submit, quelle que soit la technique employée alors, le risque ne subsite-t-il pas ? Et comme j'écris cette valeur directement dans le champs temporaire que j'ai créé dans la db, la valeur de ma variable (normale, globale, session... peu importe son format !) peut-elle être changée avant d'être écrite ? comment éviter ça ? sinon je dois juste récupérer mon champ temporaire depuis ma page de remerciement pour l'ajouter au champ final

          merci pour les précisions...

          Tu peux m'expliquer ta ligne

          global $var1;

          a quoi elle sert?
          beuh... je ne connais pas PHP donc dans mes essais, je pensais qu'en la mettant en Global, elle serait peut-être conservée jusqu'à ma page de remerciement pour faire l'écriture...


          et qui n'a pas directement à voir mais je me demande depuis quelques temps, quelqu'un a-t-il des news de jisse03 ?
          ça fait un moment qu'on ne le voit plus il me semble...
          Dernière édition par adgenodux à 06/03/2013, 13h42

          Commentaire


          • #20
            Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

            tu as vu cette video
            Sorry, we couldn’t find that page

            Commentaire


            • #21
              Re : [Problème] Breezing Forms - Ecrire dans la base en sortie de formulaire

              merci pour l'info Wismer

              je viens de faire quelques tests après avoir vu la vidéo

              le mode easy ne me semble pas très différent du Quick à part la disposition et l'écran central sinon ce sont les mêmes options, voire même moins car pas de mode 'avancé' et je ne vois pas bien où gérer les pièces... la partie "acte" de mon premier élément reprend les mêmes éléments que l'onglet "item" et le champ "Value" dans ses options ne semble pas interpréter ma requête <?php return JFactory::getUser()->get('id'); ?>, il se contente de me l'afficher dans le champs (en preview pour la précision) donc je m'y perds encore un peu...

              Commentaire


              • #22
                Re : Breezing Forms - Ecrire dans la base en sortie de formulaire

                je vois d'ailleurs que ce post où tu es intervenu, confirme ce que je disais...

                je vais donc relever mes manches et aller voir le "classic mode" ce que je peux faire ainsi...

                Commentaire


                • #23
                  Re : Breezing Forms - Ecrire dans la base en sortie de formulaire

                  alors...le classic mode semble encore plus limité que le easy donc au final, je vais rester en quick en utilisant l'IPN

                  sur le forum de crosstec, on me confirme que le "listener" (pour recevoir les "appels" de Paypal !) est intégré à BF et qu'il suffit d'ajouter les instructions souhaitées, mes écritures en l'occurrence, dans le fichier bf_paypalipn_success.php qui est automatiquement lu quand Paypal a accepté une transaction...

                  je le crée avec juste un "Echo" pour voir mais après une transaction, rien, il ne semble pas avoir été lu... il appartient à root:www-data en chmod 750

                  Comment pourrais-je vérifier qu'il le lit déjà ?

                  quelqu'un aurait une idée ?

                  Commentaire


                  • #24
                    Re : Breezing Forms - Ecrire dans la base en sortie de formulaire

                    Bonjour,

                    J'avance sur ma fonction, résolvant erreur après erreur, ligne par ligne...

                    cependant j'en ai une que je n'arrive pas à comprendre... cette ligne-ci

                    echo '!!! AVANT var1='.$_SESSION['$var1'].' - id='.$_SESSION['$idusr'].' - usrch='.$_SESSION['$usrch'].' - refer='.$_SESSION['$refp'].'!!!';
                    provoque l'erreur suivante :

                    Parse error: syntax error, unexpected T_ECHO in /var/www/components/com_breezingforms/facileforms.process.php(1218) :
                    eval()'d code on line 18 Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE,
                    expecting T_STRING or T_VARIABLE or T_NUM_STRING in
                    /var/www/components/com_breezingforms/facileforms.process.php(1218) : eval()'d code on line 5
                    alors qu'il s'agit d'un simple affichage et même quand je réduis l'expression à

                    echo '!!! AVANT var1=';

                    ... c'est pareil...

                    qu'est-ce qui cloche ?

                    Commentaire


                    • #25
                      Re : Breezing Forms - Ecrire dans la base en sortie de formulaire

                      Bonjour,

                      Je bloque toujours sur mes variables, même en utilisant les variables de session... je dois m'y prendre comme un manche alors voici mon code en "Début de soumission" :

                      $this->execPieceByName('ff_InitLib');
                      $_SESSION['$idusr'] = JFactory::getUser()->get('id');
                      $_SESSION['$var1'] = ff_getSubmit('packcredits') * 100;
                      $_SESSION['$usrch'] = ff_getSubmit('packcredits');
                      if(isset($_SESSION['$usrch']) == '10')
                      {
                      $_SESSION['$usrch'] = '001';
                      }
                      elseif ($_SESSION['$usrch'] == '25')
                      {
                      $_SESSION['$usrch'] = '002';
                      }
                      else
                      {
                      $_SESSION['$usrch'] = '003';
                      };
                      $_SESSION['$refp'] = 'GC'.date('ymdHis').$_SESSION['$usrch'].$_SESSION['$idusr'].
                      echo '!!! Début var1= '.$_SESSION['$var1'].' - usrch= '$_SESSION['$usrch'].' - idusr='.$_SESSION['$idusr'].' - refer='.$_SESSION['$refp'];
                      et en "Fin de soumission" ceci :

                      $var1 = $_SESSION['$var1'];
                      $idusr = $_SESSION['$id'];
                      $usrch = $_SESSION['$usrch'];
                      $refp = $_SESSION['$refp'];
                      echo '!!! Fin var1= '.$_SESSION['$var1'].' - usrch= '.$_SESSION['$usrch'].' - idusr='.$_SESSION['$id'].' - refer='.$_SESSION['$refp'];
                      // NE FONCTIONNE PAS - echo '!!! Fin var1= '.$var1.' - usrch= '.$usrch.' - idusr='.$idusr.' - refer='.$refp;
                      et cela me donne en résultat :

                      Parse error: syntax error, unexpected T_ECHO in /var/www/components/com_breezingforms/facileforms.process.php(1218) :
                      eval()'d code on line 18 !!! Fin var1= - usrch= - idusr= - refer=
                      Je teste comme je peux dans tous les sens en avalant doc et tutos mais qui sont parfois contradictoires ou erronés alors j'ai du mal avec la syntaxe...

                      Quelqu'un aurait une idée ?

                      Merci de votre aide...

                      Commentaire


                      • #26
                        Re : Breezing Forms - Ecrire dans la base en sortie de formulaire

                        Code PHP:
                        $_SESSION['$idusr'] = JFactory::getUser()->get('id');
                        $_SESSION['$var1'] = ff_getSubmit('packcredits') * 100;
                        $_SESSION['$usrch'] = ff_getSubmit('packcredits'); 
                        Cela ne s'ecrit pas comme ca, les $ a l'interieur .....

                        mais comme ceci

                        Code PHP:
                        $_SESSION['idusr'] = JFactory::getUser()->get('id');
                        $_SESSION['var1'] = ff_getSubmit('packcredits') * 100;
                        $_SESSION['usrch'] = ff_getSubmit('packcredits'); 
                        et ton echo

                        Code PHP:
                        echo "!!! Fin var1= $_SESSION['var1'] - usrch= $_SESSION['usrch'] - idusr=$_SESSION['$id'] - refer=$_SESSION['$refp']"
                        Pour utiliser les fonctions integre de BF avec paypal, il faut etre en quick et non en easy. ( Si j'ai bien compris )?
                        En classique , cela ne marche pas, je l'ai lu qquepart, mais le classique est enorme, il n'a aucune limite.
                        Dernière édition par Wismer à 11/03/2013, 18h06

                        Commentaire


                        • #27
                          Re : Breezing Forms - Ecrire dans la base en sortie de formulaire

                          merci pour les infos Wismer, j'ai donc pu corriger mes erreurs... et il y en avait dans presque toutes les lignes... entre les simples quotes et les doubles... pffff

                          voici donc le code corrigé et qui fonctionne maintenant parfaitement :

                          Début de soumission:

                          $this->execPieceByName('ff_InitLib');
                          $_SESSION['idusr'] = JFactory::getUser()->get('id');
                          $_SESSION['var1'] = ff_getSubmit('packcredits') * 100;
                          $_SESSION['usrch'] = ff_getSubmit('packcredits');
                          if(isset($_SESSION['usrch']) == "10")
                          {
                          $_SESSION['usrch'] = "001";
                          }
                          elseif ($_SESSION['usrch'] == "25")
                          {
                          $_SESSION['usrch'] = "002";
                          }
                          else
                          {
                          $_SESSION['usrch'] = "003";
                          };
                          $_SESSION['refp'] = "GC".date('ymdHis').$_SESSION['usrch'].$_SESSION['idusr'];
                          echo '!!! DEBUT var1='.$_SESSION[var1].' - usrch='.$_SESSION[usrch].' - idusr='.$_SESSION[idusr].' - refer='.$_SESSION[refp];
                          suivi en fin de soumission par :

                          $var1 = $_SESSION['var1'];
                          $idusr = $_SESSION['id'];
                          $usrch = $_SESSION['usrch'];
                          $refp = $_SESSION['refp'];
                          echo '!!! FIN var1='.$_SESSION[var1].' - usrch='.$_SESSION[usrch].' - idusr='.$_SESSION[idusr].' - refer='.$_SESSION[refp];
                          Donc mes variables passent bien, reste maintenant à écrire dans ma base... là toujours le prob de déclencher le bf_paypalipn_success.php mais les tests avec Paypal sont pénibles, tantôt on n'a pas accès à la Sandbox, tantôt c'est à l'IPN Simulator, c'est infernal...

                          si quelqu'un s'y connaît un peu en "ipn", je n'ai plus que ça pour finir ma dernière fonctionnalité...

                          encore merci Wismer

                          Commentaire

                          Annonce

                          Réduire
                          Aucune annonce pour le moment.

                          Partenaire de l'association

                          Réduire

                          Hébergeur Web PlanetHoster
                          Travaille ...
                          X