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 :

Envoi de données en passant par un formulaire intermédiaire


Sujet :

Langage PHP

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut Envoi de données en passant par un formulaire intermédiaire
    Bonjour,

    C'est une question concernant la récupération des valeurs d'un formulaire, voici le contexte :

    Il y a actuellement un formulaire qui récupère des données et qui les renvoie vers un fichier (moulinette.php) qui doit les traiter. Jusqu'ici rien d'extraordinaire
    Maintenant, je dois faire transiter ces valeurs par un formulaire tiers qui sera entre le 1er formulaire et moulinette.php (par sécurité soit-disant)

    Ma question est :
    Comment faire pour créer un formulaire intermédiaire qui permette de récupérer des données du premier formulaire et les renvoyer vers moulinette.php ?

    J'ai trouvé un article qui explique comment récupérer des données d'un formulaire mais j'avoue que ça ne m'aide pas beaucoup.
    Comment dois-je faire svp ?

    Voici le code du formulaire :
    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
    19
    20
    21
    22
    <form name="form" id="form" action="index.php?menuchoice=moulinette" method="post" onsubmit="return validation()">  
    <p><label for="nom">Nom * </label><input type="text" size="27%" name="nom" id="nom"/></p>
    <p><label for="email">Email * </label><input type="text" size="27%" name="email" id="email"/></p>
    <p><label for="adresse">Adresse * </label><input type="text" size="27%" name="owneraddress" id="owneraddress"/></p>
    <p><label for="cp">Code postal * </label><input type="text" size="27%" name="ownerZIP" id="ownerZIP"/></p>
    <p><label for="ville">Ville * </label><input type="text" size="27%" name="ownertown" id="ownertown"/></p>
    <p><label for="pays">Pays * </label><input type="text" size="27%" name="ownercountry" id="ownercountry"/></p>
    <p><label for="tel">Téléphone * </label><input type="text" size="27%" name="ownertelno" id="ownertelno"/></p>
    <p>
        <label for="Activite">Activité *</label>
        <select name="ownerActivite" size="1" id="ownerActivite" />
         <option value="-"></option>
         <option value="Agent">Superhéros</option>
         <option value="Carrosserie">méchant</option>      
         <option value="Autre...">Autre</option>
        </select>
    </p>
    <p><label for="Newsletter">Je souhaite recevoir<br />la Newsletter</label><input type="checkbox" size="27%" name="ownerNewsletter" id="ownerNewsletter" class="IENewsletter" />&nbsp;Oui</p>
    <p><label for="cgv">J'ai lu et j'accepte les<br /><a href="cgv_esale.htm" target="popup" onclick="window.open('','popup','width=700,height=800,left=0,top=0,scrollbars=1')">Conditions générales de vente</a></label><input type="checkbox" size="27%" value="OK" name="ownerCGV" id="ownerCGV" class="IECgv" />&nbsp;Oui</p>
     
    <input type="submit" name="submit" value="Valider mon inscription" class="submit" />
    </form>

    merci

  2. #2
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    est ce que ce formulaire intermédiaire sera validé par l'utilisateur ou pas?

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Retrokiller069 Voir le message
    Bonjour,
    est ce que ce formulaire intermédiaire sera validé par l'utilisateur ou pas?
    Bonjour Retrokiller,
    Non, ce formulaire est automatique, il ne sert que de transition, ah! et aussi à ajouter une champ supplémentaire sensible.
    Je précise que ce formulaire intermédiaire n'est pas visible de l'utilisateur.

    merci

  4. #4
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Je pense que cela peut t'aider (mais je ne l'ai pas vérifié):

    C'est du javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     <script type="text/javascript"> 
    window.onload=function(){
    document.nomDeTonFormulaire.onsubmit();
    }
    </script>
    Ou du moins je pense qu'il faudrait que tu cherches sur ce principe. Normalement, window.onload=function() signifie que la fonction s'exécute des que la page est chargé. document.nomDeTonFormulaire.onsubmit(); devrait exécuter le formulaire des son chargement.

    Pour ta page qui exécutera ceci le mieux est de créer le même formulaire en ajoutant ton champ supplémentaire.

    Pour chaque input:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="text" id="sonid" name="sonname" value="<?php if(isset($_POST['nameduprecedentinput'])) echo $_POST['nameduprecedentinput'];/>
    voila en espérant t'avoir aidé.

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Salut Retrokiller,

    Merci pour ces lignes, ça va m'aider à coup sûr. Mais concernant le Javascript, je me demande si ce n'est pas plus sûr (sécurisé) de faire ça en PHP ?
    Si c'est possible bien entendu

    De plus, je n'ai pas compris où faut-il que je mette ce bout de code,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script type="text/javascript"> 
    window.onload=function(){
    document.nomDeTonFormulaire.onsubmit();
    }
    </script>
    dans le premier formulaire ou le deuxième ?

    merci

  6. #6
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    pour le script il faudrait que tu le mettes dans le second formulaire.
    Pour le faire en php, je ne vois pas trop comment en fait. Soit tu ne passes pas par un second un formulaire mais dans ce cas juste un fichier php quelconque et il pourrait récupérer les données dans un $_session (un $_session peut stocké tout un tableau). puis tu finis ton fichier php par un header. Et du coup tu récupère ton $_session dans moulinette.php.

    Parce qu'en fait il n'a pas vraiment d'utilité à ton second formulaire?

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    D'accord, je vais essayer avec le Javascript.

    Le second formulaire ne sert qu'à ajouter les champs <input> qui contiennent des valeurs qui doivent rester cachées de l'utilisateur lambda. Parce qu'en l'état actuel, il suffit de faire afficher la source pour voir ces champs hidden...

    En relisant le JS, je m'aperçois que je ne sais pas trop comment l'utiliser. Si je fais comme ça c'est bien ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type="text/javascript"> 
    window.onload=function(){
       document.nomDuSecondFormulaire.onsubmit();
    }
    </script>
     
    <form name="nomDuSecondFormulaire" action="https://xxx.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">
    <input type=hidden name="nomDeValeurCachee" value="valeurCachee">
    ....
    <input type="text" id="sonid" name="sonname" value="<?php if(isset($_POST['nameduprecedentinput'])) echo $_POST['nameduprecedentinput'];/>
    </form>

  8. #8
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Je t'avoue que je suis pas un fortiche du javascript mais tu dois le mettre entre les balises <head></head> de ta page.

    Pour tester si ca marche mais un alert('coucou'); pour voir juste avant document.nomDuSecondFormulaire.onsubmit();. Normalement cela doit t'afficher un message box coucou.

    Ps: pourquoi ne pas tout mettre en $_session au lieu de mettre en input hidden?
    l'utilisateur ne pourras pas le voir (bon ok se sera accessible mais tu peux le sécuriser il me semble).

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Bonjour

    Grâce à tes conseils, voici ce que j'ai pu faire et ça a l'air de fonctionner :
    Le formulaire originel (vu et rempli par l'utilisateur)
    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
    19
    20
    21
    22
    23
    24
    25
    <form name="form" id="form" action="test.php" method="post" onsubmit="return validation()">
    <p><label for="nom">Nom * </label><input type="text" size="27%" name="nom" id="nom"/></p>
    <p><label for="prenom">Pr&eacute;nom * </label><input type="text" size="27%" name="prenom" id="prenom"/></p>
    <p><label for="email">Email * </label><input type="text" size="27%" name="email" id="email"/></p>
    <p><label for="adresse">Adresse * </label><input type="text" size="27%" name="owneraddress" id="owneraddress"/></p>
    <p><label for="cp">Code postal * </label><input type="text" size="27%" name="ownerZIP" id="ownerZIP"/></p>
    <p><label for="ville">Ville * </label><input type="text" size="27%" name="ownertown" id="ownertown"/></p>
    <p><label for="pays">Pays * </label><input type="text" size="27%" name="ownercountry" id="ownercountry"/></p>
    <p><label for="tel">T&eacute;l&eacute;phone * </label><input type="text" size="27%" name="ownertelno" id="ownertelno"/></p>
    <p><label for="fax">Fax </label><input type="text" size="27%" name="ownerfaxno" id="ownerfaxno"/></p>
    <p>
        <label for="Activite">Activit&eacute; *</label>
        <select name="ownerActivite" size="1" id="ownerActivite" />
         <option value="-"></option>
         <option value="aaaaaa">AAAAAA</option>
         <option value="bbbbbb">BBBBBBB</option>
         <option value="cccccc">CCCCCCC</option>       
         <option value="Autre...">Autre</option>
        </select>
    </p>
    <p><label for="Newsletter">Je souhaite recevoir<br />la Newsletter BCAuto Enchères </label><input type="checkbox" size="27%" name="ownerNewsletter" id="ownerNewsletter" class="IENewsletter" />&nbsp;Oui</p>
    <p><label for="cgv">J'ai lu et j'accepte les CGV</label><input type="checkbox" size="27%" value="OK" name="ownerCGV" id="ownerCGV" class="IECgv" />&nbsp;Oui</p>
     
    <div id="boutonValid"><input type="submit" name="submit" value="Valider mon inscription" class="submit" /></div>
    </form>
    Ensuite, il appelle test.php (invisible pour l'utilisateur et qui contient les valeurs saisies dans le 1er formulaire)
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    session_start (); 
    // on enregistre les paramètres de notre visiteur comme variables de session
    $_SESSION['nom'] = $_POST['nom']; 
    $_SESSION['prenom'] = $_POST['prenom'];
    $_SESSION['email'] = $_POST['email'];
    $_SESSION['owneraddress'] = $_POST['owneraddress']; 
    $_SESSION['ownerZIP'] = $_POST['ownerZIP'];
    $_SESSION['ownertown'] = $_POST['ownertown'];
    $_SESSION['ownercountry'] = $_POST['ownercountry']; 
    $_SESSION['ownertelno'] = $_POST['ownertelno'];
    $_SESSION['ownerfaxno'] = $_POST['ownerfaxno'];
    $_SESSION['ownercompanyName'] = $_POST['ownercompanyName'];
    $_SESSION['ownerTVAnum'] = $_POST['ownerTVAnum'];
    $_SESSION['ownerActivite'] = $_POST['ownerActivite']; 
    $_SESSION['ownerNewsletter'] = $_POST['ownerNewsletter'];
    $_SESSION['ownerCGV'] = $_POST['ownerCGV'];
     
    echo '
    <form name="form" id="form" action="http://www.google.fr" method="post" onsubmit="return validation()">  
     
    <input type=hidden name="oid" value="00DT0000000HJoo">
    <input type=hidden name="00N200000029j8Q" value="XXXXXXX">
     
    <p><label for="nom">Nom * </label><input type="text" size="27%" name="nom" id="nom" value="'. $_SESSION['nom'] .'" /></p>
    <p><label for="prenom">Pr&eacute;nom * </label><input type="text" size="27%" name="prenom" id="prenom" value="'. $_SESSION['prenom'] .'" /></p>
    <p><label for="email">Email * </label><input type="text" size="27%" name="email" id="email" value="'. $_SESSION['email'] .'" /></p>
    <p><label for="adresse">Adresse * </label><input type="text" size="27%" name="owneraddress" id="owneraddress" value="'. $_SESSION['owneraddress'] .'" /></p>
    <p><label for="cp">Code postal * </label><input type="text" size="27%" name="ownerZIP" id="ownerZIP" value="'. $_SESSION['ownerZIP'] .'" /></p>
    <p><label for="ville">Ville * </label><input type="text" size="27%" name="ownertown" id="ownertown" value="'. $_SESSION['ownertown'] .'" /></p>
    ...
    <p><label for="Activite">Activit&eacute; *</label><input type="text" size="27%" name="ownerActivite" id="ownerActivite" value="'. $_SESSION['ownerActivite'] .'" /></p>
     
    <p><label for="Newsletter">Je souhaite recevoir<br />la Newsletter BCAuto Enchères </label><input type="checkbox" size="27%" name="ownerNewsletter" id="ownerNewsletter" class="IENewsletter" value="'. $_SESSION['ownerNewsletter'] .'" />&nbsp;Oui</p>
    <p><label for="cgv">lu accepte les<br /></label><input type="checkbox" size="27%" value="OK" name="ownerCGV" id="ownerCGV" class="IECgv" value="'. $_SESSION['ownerCGV'] .'" />&nbsp;Oui</p>
     
    <div id="boutonValid"><input type="submit" name="submit" value="Valider mon inscription" class="submit" /></div>
    </form>';
    ?>
    Ce qui affiche un second formulaire avec les valeurs saisies dans le premier formulaire + l'ajout de deux <input hidden>.

    Question
    - Il me semble que ça pourrait fonctionner, qu'en penses-tu ?


    merci

  10. #10
    Membre actif Avatar de Retrokiller069
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2010
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2010
    Messages : 217
    Points : 296
    Points
    296
    Par défaut
    Bonjour,

    oui je pense que cela peut marcher, le mieux est de tester

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

    Informations forums :
    Inscription : Avril 2005
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Bonjour

    Je tarde un peu à répondre car finalement j'ai opté pour utiliser cURL car le javascript n'était pas assez fiable dans le sens où s'il est désactivé sur le navigateur, tout tombe à l'eau...

    Mais voilà que je galère avec cURL, en cherchant par-ci par-là j'ai un peu compris comment cela fonctionne, mais je ne sais pas comment le tester.
    Avec ce code, le $result me ramène une page blanche...

    Voici le code en question :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    $postfields = array();
    $postfields["action"] = "submit";
    $postfields["nom"] = $_POST['nom'];
    $postfields["prenom"] = $_POST['prenom'];
    $postfields["email"] = $_POST['email'];
    $postfields["owneraddress"] = $_POST['owneraddress'];
    $postfields["ownerZIP"] = $_POST['ownerZIP'];
    $postfields["ownertown"] = $_POST['ownertown'];
    $postfields["ownercountry"] = $_POST['ownercountry'];
    $postfields["ownertelIndicatif"] = $_POST['ownertelIndicatif'];
    $postfields["ownertelno"] = $_POST['ownertelno'];
    $postfields["ownerfaxno"] = $_POST['ownerfaxno'];
    $postfields["ownercompanyName"] = $_POST['ownercompanyName'];
    $postfields["ownerTVAnum"] = $_POST['ownerTVAnum'];
    $postfields["ownerActivite"] = $_POST['ownerActivite'];
    $postfields["ownerNewsletter"] = $_POST['ownerNewsletter'];
    $postfields["ownerCGV"] = $_POST['ownerCGV'];
    var_dump($postfields);
     
    //url de la page de soumission
    $url = "http://url.com/traitement.php";
    $useragent = "Mozilla/5.0";
    $referer = $url;
     
    //Initialise une session CURL
    $ch = curl_init($url);
    //CURL options
    curl_setopt($ch, CURLOPT_POST, 1);
    //On poste les données du tableau $postfields
    curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
    //On définit un useragent ici Mozilla/5.0
    curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
    //On passe un referrer ici on passe la même page $url
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    //on récupère le contenu de la page de résultat de la soumission dans une chaine
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    // en cas de redirection (facultatif ici)
    //curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    //Page de résultats et fermeture de session
    $result = curl_exec($ch);
    curl_close($ch);
     
    //on peut faire un echo du résultat obtenu
    echo $result;
    ?>
    Le var_dump m'indique pourtant que les champs de $postsfields sont bien renseignés. Qu'est-ce qui ne va pas entretemps ?

    Merci de votre aide et désolé pour le yoyo


    EDIT : c'est bon j'ai trouvé, le code est correct.

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

Discussions similaires

  1. [Flex3] Envois de données par formulaire
    Par DBA_OCP dans le forum Flex
    Réponses: 8
    Dernier message: 24/12/2010, 11h59
  2. [Vcard] En passant par un formulaire de contact
    Par BenoitDenis dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 28/01/2010, 14h41
  3. perde de données en passant par un TableModel
    Par kimlaw95 dans le forum Composants
    Réponses: 5
    Dernier message: 07/04/2009, 16h45
  4. [Mail] Envoi de données d'un formulaire par e-mail
    Par gorgoroth dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2007, 10h53
  5. Réponses: 5
    Dernier message: 24/08/2007, 15h42

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