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 :

Double soumission d'un formulaire sous Firefox uniquement


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <script> alert('Debut');</script>
    avec a la fin un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <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

  2. #2
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    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
    -------------------------

  3. #3
    Membre confirmé Avatar de zulad
    Homme Profil pro
    creatif
    Inscrit en
    Juin 2007
    Messages
    713
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : creatif

    Informations forums :
    Inscription : Juin 2007
    Messages : 713
    Points : 519
    Points
    519
    Par défaut
    tu load un js qui renvoit le form autant qu'il faut
    Aucun de nous n'est seul, Même l'air que nous expirons est inspirés par d'autres...

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 30
    Points : 24
    Points
    24
    Par défaut
    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 : 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
    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

Discussions similaires

  1. drole de comportement formulaire sous firefox
    Par reventlov dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/06/2008, 10h49
  2. Soumission incontrôlée de formulaire sous Firefox
    Par scrouet dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/08/2007, 12h27
  3. Forcer rafraichissement du formulaire sous Firefox
    Par Marion_ dans le forum Langage
    Réponses: 2
    Dernier message: 23/02/2007, 10h15
  4. Affichage d'un formulaire sous firefox
    Par caesa dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 06/07/2006, 11h48
  5. [JSP]Problème de double soumission d'un formulaire
    Par jgfa9 dans le forum Servlets/JSP
    Réponses: 31
    Dernier message: 24/08/2005, 11h54

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