Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 20/07/2011, 16h37   #1
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 180
Points : 29
Points : 29
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 :
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
miltonis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 17h02   #2
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

est ce que ce formulaire intermédiaire sera validé par l'utilisateur ou pas?
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 17h31   #3
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 180
Points : 29
Points : 29
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
miltonis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 18h55   #4
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Je pense que cela peut t'aider (mais je ne l'ai pas vérifié):

C'est du javascript:
Code :
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 :
<input type="text" id="sonid" name="sonname" value="<?php if(isset($_POST['nameduprecedentinput'])) echo $_POST['nameduprecedentinput'];/>
voila en espérant t'avoir aidé.
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 11h11   #5
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 180
Points : 29
Points : 29
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 :
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
miltonis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 11h25   #6
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
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?
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 12h10   #7
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 180
Points : 29
Points : 29
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 :
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>
miltonis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 12h26   #8
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
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).
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 15h49   #9
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 180
Points : 29
Points : 29
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 :
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 :
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
miltonis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 19h56   #10
Membre confirmé
 
Avatar de Retrokiller069
 
Homme Bertrand
Étudiant
Inscription : octobre 2010
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Bertrand
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2010
Messages : 216
Points : 268
Points : 268
Bonjour,

oui je pense que cela peut marcher, le mieux est de tester
__________________
Ce n'est pas ce que nous voulons faire qui est impossible mais ce sont les moyens à sa mise en oeuvre qui peuvent le paraître

Ps: N'oubliez pas SVP
Retrokiller069 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 17h39   #11
Nouveau Membre du Club
 
Inscription : avril 2005
Messages : 180
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 180
Points : 29
Points : 29
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 :
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.
miltonis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h23.


 
 
 
 
Partenaires

Hébergement Web