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 29/06/2007, 15h10   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 30
Points : 12
Points : 12
Par défaut Double soumission d'un formulaire sous Firefox uniquement

Bonjour,

Je sais pas si je suis exactement ou il faut, désolé si ce n'est pas le cas.

J'ai un formulaire d'inscription basique (formulaire.php) avec une page externe (traitement.php) qui inscrit les données recue de formulaire.php dans ma DB et qui envoie 2 mail (un pour l'utilisateur, l'autre pour l'admin) via la fonction php mail().

Mon souci est que sous IE7 mon formulaire rempli son role parfaitement (Inscription en DB + envoie de mail*2) alors que Firefox me fait tout en double :deux inscription en DB identique (a l'exception des ID unique bien sur) et double envoie de mail (2 pour l'utililsateur et deux pour l'admin)

Je tiens a préciser que au debut de mon traitement.php j'ai un
Code :
<script> alert('Debut');</script>
avec a la fin un
Code :
<script> alert('Fin');</script>
et que c'est deux alert n'apparaissent qu'une seule fois quelque soi le navigateur utilisé

Donc je suis un peu dans l'impasse. Mon code qui normalement devrai etre ma premiere source de probleme, pour une fois, n'a pas l'air en cause, le probleme viendrai de firefox mais je ne vois vraiment pas comment

Je suis donc a la recherche de n'importe quel morceau de debut de solution , si vous avez une idée je suis tout ouie
Okena est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2007, 17h42   #2
Membre émérite
 
Avatar de viviboss
 
Inscription : août 2006
Messages : 943
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Gard (Languedoc Roussillon)

Informations forums :
Inscription : août 2006
Messages : 943
Points : 941
Points : 941
A voir.

Car ton traitement.php est exécuté sur le serveur, donc aucune interaction avec le type de client.

Donne le code de ton formulaire pour voir....

Et puis celui de ton traitement...

PS : pour débuger du PHP, le coup du script c'est pas terrible. Préfère un echo ou print_r, c'est plus sur, et moins galère à interpréter...
__________________
Veni Vidi Vici
-------------------------
Mes articles : developpez.com ou bien vbview.net
-------------------------
Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
Et aussi : --> pear_manual_fr.chm!!!

Ou encore : --> Les tutoriaux & cours PHP de Développez.com
-------------------------
viviboss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2007, 00h28   #3
Membre confirmé
 
Avatar de zulad
 
Inscription : juin 2007
Messages : 505
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 505
Points : 292
Points : 292
tu load un js qui renvoit le form autant qu'il faut
zulad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2007, 10h16   #4
Candidat au titre de Membre du Club
 
Inscription : mars 2004
Messages : 30
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 30
Points : 12
Points : 12
Hop dsl j'etait en we avant que mon message soit déplacé ici ^^"

Citation:
Envoyé par zulad
tu load un js qui renvoit le form autant qu'il faut
C'est a dire ?


Citation:
Envoyé par viviboss
PS : pour débuger du PHP, le coup du script c'est pas terrible. Préfère un echo ou print_r, c'est plus sur, et moins galère à interpréter...
j'avoue ^^, mais je cherchais a savoir si ma page traitement.php était véritablement appélé deux fois.

Sinon voila mon code HTML générée. Je précise que comme j'utilise un CMS, je ne maitrise pas completement tout la génération du code.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
<div id="texte">
	<script language="javascript" type="text/javascript">
		function submitbutton_reg() {
			var form = document.FormInscription;
			var r = new RegExp("[\<|\>|\"|\'|\%|\;|\(|\)|\&|\+|\-]", "i");
 
			// do field validation
			if (form.name.value == "") {
				alert( "Saisissez votre nom." );
			} else if (form.surname.value == "") {
				alert( "Saisissez votre Prénom." );
			} else if (form.email.value == "") {
				alert( "Saisissez une adresse e-mail valide." );
			} else if (form.password.value.length < 6) {
				alert( "Saisissez un mot de passe valide : sans espace, d'au moins 6 caractères, alphanumériques uniquement (0-9,a-z,A-Z)" );
			} else if (form.password2.value == "") {
				alert( "Vérifiez le mot de passe." );
			} else if ((form.password.value != "") && (form.password.value != form.password2.value)){
				alert( "Le mot de passe ne correspond pas, veuillez réessayer." );
			} else if (r.exec(form.password.value)) {
				alert( "Saisissez un Mot de passe : valide :  sans espace, au moins 6 caractères, alphanumériques uniquement (0-9,a-z,A-Z)" );
			} else if (form.type_Specialité.value == "") {
				alert( "Saisissez votre Spécialité." );
			} else if (form.type_Ville.value == "") {
				alert( "Saisissez votre Ville." );
			} else if (form.type_Adresse.value == "") {
				alert( "Saisissez votre Adresse." );
			} else if (form.type_CodePostal.value.length != 5) {
				alert("Saisissez votre Code Postal." );
			} else {
				form.submit();
			}
		}
		</script>
		<form action="index.php" method="post" name="FormInscription">
		<div class="componentheading">Inscription</div>
		<table cellpadding="0" cellspacing="0" border="0" width="100%" class="contentpane">
		<tr>
			<!--[...DU TEXTE...]-->
		</tr>
		<tr>
			<td width="30%"><!--[...DU TEXTE...]--></td>
		  	<td>
		  		<table>
				  	<tr>
					  	<td>20</td><td><input type="radio" name="nbr_rev" value="20" checked="checked"/></td>
					  	<td>40</td><td><input type="radio" name="nbr_rev" value="40"/></td>
					  	<!--<td>60</td><td><input type="radio" name="nbr_rev"  value="60"/></td>-->
					  	<!--<td>80</td><td><input type="radio" name="nbr_rev"  value="80"/></td>-->
					</tr>
 
				</table>
			</td>
		</tr>
		<tr height=5><td colspan="2"></td></tr>
		<tr>
			<td width="30%">Nom&nbsp;: </td>
			<td><input type="text" name="name" size="40" value="" class="inputbox" maxlength="50" /></td>
		</tr>
 
		<tr height=5><td colspan="2"></td></tr>
		<tr>
			<td width="30%">Prénom&nbsp;: </td>
		  	<td><input type="text" name="surname" size="40" value="" class="inputbox" maxlength="50" /></td>
		</tr>
		<tr height=5><td colspan="2"></td></tr>
		<tr>
			<td>e-mail&nbsp;: </td>
 
			<td><input type="text" name="email" size="40" value="" class="inputbox" maxlength="100" /></td>
		</tr>
		<tr height=5><td colspan="2"></td></tr>
		<tr>
			<td>Mot de passe&nbsp;: </td>
		  	<td><input class="inputbox" type="password" name="password" size="40" value="" /></td>
		</tr>
		<tr height=5><td colspan="2"></td></tr>
 
		<tr>
			<td>Vérification du mot de passe&nbsp;: </td>
			<td><input class="inputbox" type="password" name="password2" size="40" value="" /></td>
		</tr>
		<tr height=5><td colspan="2"></td></tr>
		<tr>
			<td><div id="div_t_Specialité">Specialité:</div></td>
 
			<td><input type="text" class="inputbox" size="40" id="type_Specialité" name="field_1" value="" /></td></tr>
		<tr height=5><td colspan=2></td></tr>
		<tr>
			<td><div id="div_t_Ville">Ville:</div></td>
			<td><input type="text" class="inputbox" size="40" id="type_Ville" name="field_2" value="" /></td></tr>
		<tr height=5><td colspan=2></td></tr>
		<tr>
			<td><div id="div_t_Adresse">Adresse:</div></td>
 
			<td><input type="text" class="inputbox" size="40" id="type_Adresse" name="field_3" value="" /></td></tr>
		<tr height=5><td colspan=2></td></tr>
		<tr>
			<td><div id="div_t_CodePostal">CodePostal:</div></td>
			<td><input type="text" class="inputbox" size="40" id="type_CodePostal" name="field_4" value="" /></td></tr>
		<tr height=5><td colspan=2></td></tr>
		<tr>
			<td><div id="div_t_info_promo">info_promo:</div></td>
 
			<td><input type="text" class="inputbox" size="40" id="type_info_promo" name="field_5" value="" /></td></tr>
		<tr height=5><td colspan=2></td></tr>
		<tr>
			<td><div id="div_t_newsletter">newsletter:</div></td>
			<td><input type="text" class="inputbox" size="40" id="type_newsletter" name="field_6" value="" /></td></tr>
		<tr height=5><td colspan=2></td></tr>
		  <script type="text/javascript">
 
  var visible = new Array;
	visible[0] = new Array(1, 1, 1);
	visible[1] = new Array(2, 1, 2);
	visible[2] = new Array(3, 1, 3);
	visible[3] = new Array(4, 1, 4);
 
  var fields = new Array;
  	fields[0] = new Array(1, 'Specialité', 1);
	fields[1] = new Array(2, 'Ville', 1);
	fields[2] = new Array(3, 'Adresse', 1);
	fields[3] = new Array(4, 'CodePostal', 1);
	fields[4] = new Array(5, 'info_promo', 0);
	fields[5] = new Array(6, 'newsletter', 0);
 
  var restrictions = new Array;
    function checkvisibility()
  {
    var hidden = new Array;
    //gether all hidden fields
    var k = 0;
    for(i=0;i<fields.length;i++)
	{
      if(fields[i][2] == 0)
	  {
        hidden[k] = new Array(fields[i][1], 0);
        k++;
      }
    }
    //loop through all fields, set visible status to 1 if it should be visible
    for(i=0;i<restrictions.length;i++)
	{
      //get value for this field
      if(restrictions[i][1] == 'select')
	  {
        var el = document.getElementById('type_' + restrictions[i][0]);
        var val = el.options[el.selectedIndex].value;
      }
	  else if(restrictions[i][1] == 'yes_no')
	  {
        if(document.mosForm)
			{var el = eval('document.mosForm.field_' + restrictions[i][0]);}
		else if(document.mosUserForm)
			{var el = eval('document.mosUserForm.field_' + restrictions[i][0]);}
		else if(document.adminForm)
			{var el = eval('document.adminForm.field_' + restrictions[i][0]);}
        var val = null;
        for (var j=0, n=el.length; j < n; j++)
		{
      		if (el[j].checked)
			{
      			val = el[j].value;
      			break;
      		}
      	}
      }
	  else
	  	{var val = 0;}
 
      //value is known now..
      for(j=0;j<visible.length;j++)
	  {
        if(visible[j][0] == restrictions[i][0])
		{ //only the current
          if(visible[j][1] == val)
		  {
            for(k=0;k<hidden.length;k++)
			{
              if(visible[j][2] == hidden[k][0])
			  	{hidden[k][1] = 1;}
            }
          }
        }
      }
    }
    //set fields
    for(i=0;i<hidden.length;i++)
	{
		//alert('here : '+hidden.length+" || "+i+"->"+hidden[i][0]+"-"+hidden[i][1]);
      if(hidden[i][1])
	  	{
	  		//alert(hidden[i][0]+"-"+hidden[i][1]+" : DISPLAY");
		  document.getElementById('div_t_' + hidden[i][0]).style.display = 'block;';
		  document.getElementById('type_t_' + hidden[i][0]).style.display = 'block;';
		}
	  else
	  	{
	  		//alert(hidden[i][0]+"-"+hidden[i][1]+" : HIDE");
			document.getElementById('div_t_' + hidden[i][0]).style.display = 'none';
			document.getElementById('type_' + hidden[i][0]).style.display = 'none';
			document.getElementById('div_t_' + hidden[i][0]).style.visibility = 'hidden';
			document.getElementById('type_' + hidden[i][0]).style.visibility = 'hidden';
		}
    }
  }
  //form init
  checkvisibility();
  </script>
  <!--<table>-->
  		<tr>
		<td width="30%">Newsletter</td>
		<td>
		<table>
			<tr valign="top">
			<td><input type="checkbox" name="InfoPromo" value="okInfo" /></td>
			<td><i>Cochez la case ci-contre si vous ne souhaitez pas que vos coordonnées soient conservés à visée info-promotionelle</i></td>
			</tr>
 
			<tr valign="top">
				<td><input type="checkbox" name="Newsletters" value="okNews" /></td>
				<td><i>Cochez la case ci-contre si vous ne souhaitez pas recevoir notre newsletter</i></td>
			</tr>
		</table>
		</td>
		</tr>
		<tr><td colspan="2"></td></tr>
		<tr><td colspan="2"></td></tr>
		</table>
		<input type="hidden" name="id" value="0" />
		<input type="hidden" name="gid" value="0" />
		<input type="hidden" name="useractivation" value="1" />
		<input type="hidden" name="option" value="com_registration" />
		<input type="hidden" name="task" value="saveRegistration" />
		<input type="button" value="Validez l'inscription" class="button" onClick="submitbutton_reg()" />
		<br /><br /><i>* Tous les champs sont obligatoires<br /><br /><font size="0.8em" color="gray">Vous disposez d'un droit d'accés, de modification, de réctification et de suppresion des données qie vous concernent (art34de la loi "Informatique et lLibertés". pour l'exercer, adressez-vous à Winnie L'Ourson via la rubrique <a href="http://www.avenirsdefemmes.com/component/option,com_contact/Itemid,3/">Nous Contacter</a></font></i>
		</form>
	</div>
Je mettrai mon code de traitement.php si y'a besoin mais je doute vraiment que cela vienne de la.
Je continue quand meme mes investigations et je regarde si cela ne pourrai pas venir d'un conflit IP au niveau de mon serveur.
Merci de vous interréser a mon cas
Okena est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h47.


 
 
 
 
Partenaires

Hébergement Web