Bonjour,
Ayant besoin d'un formulaire de commande, j'ai "bidouiller" 2 scripts pour n'en faire qu'un ; mais avant d'aller plus loin, j'ai un doute sur la sécurité du script.
Je sais que le code n'est pas très académique, mais mes compétences sont très limités.
page avec formulaire de commandequi appelle la page script.js
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 <form name="form1" Method="POST" > <div id="formto"> <div id="form01"> Cuvée<br /> <br /> Grenache, rouge<br /> Carignan, rouge<br /> Syrah, rouge<br /> Syrah, rosé<br /> </div> <div id="form02"> Prix unitaire<br /> <br /> <input type="text" class="col1" name="pu1" value="7.5" onChange="champ_verrouille(this,7.5)"> €<br /> <input type="text" class="col1" name="pu2" value="9" onChange="champ_verrouille(this,9)"> €<br /> <input type="text" class="col1" name="pu3" value="13" onChange="champ_verrouille(this,13)"> €<br /> <input type="text" class="col1" name="pu4" value="3.5" onChange="champ_verrouille(this,3.5)"> €<br /> </div> <div id="form03"> Quantité<br /> <br /> <input type="text" class="col2" name="q1" value="0" onFocus="this.value=''" maxlength=2 onBlur="test_champ(this)"> bouteille(s) <input type="text" class="col2" name="q2" value="0" onFocus="this.value=''" maxlength=2 onBlur="test_champ(this)"> bouteille(s) <input type="text" class="col2" name="q3" value="0" onFocus="this.value=''" maxlength=2 onBlur="test_champ(this)"> bouteille(s) <input type="text" class="col2" name="q4" value="0" onFocus="this.value=''" maxlength=2 onBlur="test_champ(this)"> bouteille(s) </div> <div id="form04"> Prix total<br /> <br /> <input type="text" class="col3" name="p1" readonly> €<br /> <input type="text" class="col3" name="p2" readonly> €<br /> <input type="text" class="col3" name="p3" readonly> €<br /> <input type="text" class="col3" name="p4" readonly> €<br /> </div> <div id="formfrais">Frais de port<input type="text" class="col1" name="pu8" value="30" onChange="champ_verrouille(this,30)" readonly> €</p></div> <div id="formtotal">Total TTC<input type="text" class="col4" name="total" readonly> € </p></div> <p class="formsoumettre"><input type="submit" class="formsoumettre" value="Valider" onClick="soumettre_form()"><input class="formsoumettre" type="reset" value="Effacer" ></p>
et la dernière page de validation : 03_commande_envoi.php
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 /* ----------------------------------- commande ------------------------------------*/ <!-- function test_champ(champ) { expr_reg = /^\d*$/ ; // Ci-dessus : expression régulière qui match 0,1 ou plusieurs chiffres ; // de cette façon on vérifie que l'utilisateur entre bien un nombre entier if ( expr_reg.test(champ.value) ) { // c'est bien un nombre entier calcul_form() ; } else { // ce n'est pas un nombre entier alert ("Ce n'est par un nombre entier !") ; document.form1.elements[champ.name].value = "" ; // on efface la valeur entrée erronée calcul_form() ; } } function calcul_form() { // le with ci-dessous permet d'abréger "document.forms.form1.p1.value" en "p1.value" with (document.forms.form1) { p1.value = q1.value * pu1.value ; p2.value = q2.value * pu2.value ; p3.value = q3.value * pu3.value ; p4.value = q4.value * pu4.value ; total.value = p1.value *1 + p2.value *1 + p3.value *1 + p4.value *1 +30 ; // Ai mis les *1 ci-dessus afin que les + fassent une somme arithmétique // et non pas une concaténation de chaînes de caractères } } function champ_verrouille(champ,valeur) { // Remarque : en HTML 4.0, il existe un attribut "read-only" pour la // balise <INPUT TYPE=text> qui interdira de modifier un champ // mais ce que je fais ci-dessous est beaucoup plus sûr !!! // alert ("Ce champ de peut pas être modifié !") ; document.form1.elements[champ.name].value = valeur ; // on remet "valeur" initiale dans champ } function soumettre_form() { if ( document.forms.form1.total.value == 0 ) { alert ("Vous n'avez rien commandé !\n => commande non soumise") ; return false ; } else { // Les 2 lignes ci-dessous devraient être activées pour réellement passer le form. à script CGI // document.form1.method = "POST" ; // document.form1.action = "http://dgrwww.epfl.ch/cgi-bin/uncgi/mail_form.sh?mailto=Jean-Daniel.Bonjour@epfl.ch" ; document.write ("<html><head><title></title> <link href=\"style/contact.css\" type=\"text/css\" rel=\"stylesheet\"/></head><body><div id=\"contact\"><div id=\"formulaire\"><h3>Resultat de la commande :</h3><form method=\"post\" action=\"03_commande_envoi.php\"><p><textarea name=\"message\" readonly cols=30 rows=5> \n Grenache, rouge" + document.forms.form1.q1.value + " bouteille(s) ; soit : "+ document.forms.form1.p1.value + " € \n Carignan, rouge " + document.forms.form1.q2.value + " bouteille(s) ; soit : "+ document.forms.form1.p2.value + " € \n Syrah, rouge " + document.forms.form1.q3.value + " bouteille(s) ; soit : "+ document.forms.form1.p3.value + " € \n Syrah, rosé " + document.forms.form1.q4.value + " bouteille(s) ; soit : "+ document.forms.form1.p4.value + " € \n " + document.forms.form1.total.value + " € </textarea></p><h4>E-Mail<br /><input type=\"text\" name=\"email\" id=\"email\" size=30><br /></h4><h4>Nom<br /><input type=\"text\" name=\"nom\" id=\"nom\" size=30><br /></h4><h4>Adresse<br /><input type=\"text\" name=\"rue\" id=\"email\"><br />Code postal - Ville<br /><input type=\"text\" name=\"code\" id=\"email\"><br /></h4><h5>Merci d'envoyer un chèque à l'ordre de <br /><h3 class=\"formenvoyer\"><input type=\"submit\" class=\"formenvoyer\" value=\"Envoyer\"></h3></form></div></div></body></html>" ) ; document.writeln(" "); document.close () ; return true ; } } // -->
Merci d'avance
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 <div id="contact"> <div id="formulaire"> <?php $msg .= "E-mail:\t$email\n"; $msg = "Nom:\t$nom\n"; $msg .= "Adresse:\t$rue\n"; $msg .= "Adresse:\t$code\n"; $msg .= "Message:\t$message\n\n"; $recipient = "monmail@aaa.fr"; $subject = "{Commande site web}"; $mailheaders = "From: <> \n"; $mailheaders .= "Reply-To: $CP\n\n"; mail($recipient, $subject, $msg, $mailheaders); echo "<h1 align=center>Commande envoyée<br /></h1>"; echo "<br />"; echo "<h5>Votre commande à bien été prise en compte ; vous allez recevoir rapidement un mail de confirmation.</h5>"; echo "<br />"; echo "<h3>Elle sera envoyé à la réception de votre chèque.</h3>"; echo "<br />"; echo "<h5>Merci pour votre confiance.</h5>"; echo "<br />"; echo "<br />"; echo "<br />"; ?> </div> </div>
Partager