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

JavaScript Discussion :

Captcha + champ cach� = toujours des SPAM


Sujet :

JavaScript

  1. #1
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut Captcha + champ cach� = toujours des SPAM
    Salut,

    Je viens demander de l'aide car je n'arrive pas � �radiquer les SPAM qui remplissent mon formulaire de contact.
    Comme vous le verrez, j'ai mis en place une fonction verifform() pour :

    - v�rifier que la r�ponse au captcha a �t� bien remplie (3+2=5)
    - v�rifier que le champ cach� en display:none n'a pas �t� rempli (si celui-ci est rempli, c'est que c'est un robot et non un humain!).

    Depuis, je re�ois encore des formulaires SPAM, mais cette fois les champs sont compl�tements vides....

    Que faire ?

    Merci !

    Voici la page 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
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Formulaire</title>
    <!--[if lte IE 7]>
    	<link type="text/css" rel="stylesheet" href="css/style-ie.css" />
    <![endif]-->
     
    <link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
    <script type="text/javascript" src="js/shadowbox.js"></script>
    <script src="js/swfobject_modified.js" type="text/javascript"></script>
    <script type='text/javascript' language='javascript' src='js/disclaimer.js'></script>
     
    <script type="text/javascript">
     
     
     
     
    </script>
     
    <script type="text/javascript">
     
    <! CI-DESSOUS LA FONCTION POUR VÉRIFIER LES CHAMPS DU FORMULAIRE -->
     
    function verifform()
      {
       if(document.formulaire.nom.value == "")
        {
         alert("Veuillez entrer votre nom!");
         document.formulaire.nom.focus();
         return false;
        }
       if(document.formulaire.email.value == "")
        {
         alert("Veuillez entrer votre adresse électronique!");
         document.formulaire.email.focus();
         return false;
        }
       if(document.formulaire.email.value.indexOf('@') == -1)
        {
         alert("Ce n'est pas une adresse électronique valable!");
         document.formulaire.email.focus();
         return false;
        }
    	if(document.formulaire.email2.value != "")
        {
         alert("Champ caché à ne pas remplir !");
         document.formulaire.email2.focus();
         return false;
        }
    	if(document.formulaire.message.value == "")
        {
         alert("Veuillez entrer votre message!");
         document.formulaire.nom.focus();
         return false;
        }
    	if(document.formulaire.captcha.value != 5)
        {
         alert("La réponse du captcha est erronée!");
         document.formulaire.captcha.focus();
         return false;
        }
      }
      //-->
     
    </script>
     
     
     
     
    </head>
     
    <body>
    <div id="container">
    	<div id="musique">
     
        <div id="lang"> 
          <a href="en/"><img src="imgs/en.png" width="16" height="11" alt="vers la version en Anglais" /></a>
          </div>  <!--FIN DE LANGUE-->
       	  <object id="FlashID3" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="175" height="45">
        	  <param name="movie" value="swf/sound_player.swf" />
        	  <param name="quality" value="high" />
        	  <param name="wmode" value="transparent" />
        	  <param name="swfversion" value="6.0.65.0" />
        	  <!-- Cette balise <param> invite les utilisateurs de Flash Player en version 6.0 r65 et ultérieure à télécharger la version la plus récente de Flash Player. Supprimez-la si vous ne voulez pas que cette invite soit visible. -->
        	  <param name="expressinstall" value="Scripts/expressInstall.swf" />
        	  <!-- La balise <object> suivante est destinée aux navigateurs autres qu'IE. Supprimez-la d'IE à l'aide d'IECC. -->
        	  <!--[if !IE]>-->
        	  <object type="application/x-shockwave-flash" data="swf/sound_player.swf" width="175" height="45">
        	    <!--<![endif]-->
        	    <param name="quality" value="high" />
        	    <param name="wmode" value="transparent" />
        	    <param name="swfversion" value="6.0.65.0" />
        	    <param name="expressinstall" value="Scripts/expressInstall.swf" />
        	    <!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
        	    <div>
        	      <p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Obtenir le lecteur Adobe Flash" width="112" height="33" /></a></p>
      	      </div>
        	    <!--[if !IE]>-->
      	    </object>
        	  <!--<![endif]-->
      	  </object>	  
    	  </div>
    	<div id="menu">
    		<?php include('menu.php'); ?>
        </div> 
    	<!-- FIN MENU -->
    <div id="contenu-contact">
        	<div id="global">
            	<div id="contact"> 
    				<p><strong>Pour nous contacter vous pouvez remplir ce formulaire:</strong></p>
     
     
                    <form name="formulaire" action="validation.php" method="post" class="formulaire"  id="commentForm" onsubmit="return verifform()">
                    <div id="col1">
                        <div class="formulaire"> 
                            <label for="prenom">Prénom</label>
                            <input name="prenom" id="prenom" type="text" size="20" maxlength="20"/>
                        </div>
     
                        <div class="formulaire"> 
                            <label for="nom">Nom <span>*</span></label>
                            <input name="nom" id="nom" type="text" size="20" maxlength="20"/>
                        </div>
     
                        <div class="formulaire"> 
                            <label for="adresse">Adresse</label>
                            <input name="adresse" id="adresse" type="text" size="20" maxlength="50"/>
                        </div>
     
                        <div class="formulaire"> 
                            <label for="ville">Ville</label>
                            <input name="ville" id="ville" type="text" size="20" maxlength="50" />
                        </div>
     
                        <div class="formulaire"> 
                            <label for="phone">N° tel</label>
                            <input name="phone" id="phone" type="text" size="20" maxlength="20" />
                        </div>
     
                        <div class="formulaire"> 
                            <label for="email">Email <span>*</span></label>
                            <input name="email" id="email" type="text" size="20" maxlength="50" />
                        </div>
     
                        <! CI-DESSOUS CHAMP CACHE -->
     
    		    <div style="display:none">
    		       <label for="email2">Email verification<span>*</span></label>
    		       <input id="email2" name="email2" type="text" />
    		   </div>
     
    				</div> <!--FIN DE COLONNE 1 -->
                    <div id="col2">
                        <div class="formulaire">
                            <label for="message"> Message <span>*</span></label>
     
                            <textarea name="message" id="message" cols="20" rows="3"></textarea>
    					</div>
    		        <div class="formulaire">
    			    <label for="captcha">3+2 = ? <span>*</span></label>
                                <input name="captcha" id="captcha" type="text" size="5" maxlength="5" />
    			</div>
     
    		        <input type="submit" name="submit" class="envoyer" id="envoyer" value="Envoyer" />
     
                      <a href="imgs/plan.jpg" rel="shadowbox">
                      <img src="imgs/arrow_plan.png" width="105" height="105" alt="Plan d'accès du Penthouse Club" id="plan" />
                      </a>
                      </div>    <!--FIN DE COLONNE 2 -->
                    </form>
     
              </div> <!--FIN DE CONTACT-->
     
    		</div>
            <div id="flash">
           	  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="410" height="430" id="FlashID" title="Dance girl">
            	  <param name="movie" value="swf/dance_girl2.swf" />
            	  <param name="quality" value="high" />
            	  <param name="wmode" value="transparent" />
            	  <param name="swfversion" value="6.0.65.0" />
            	  <!-- La balise <object> suivante est destinée aux navigateurs autres qu'IE. Supprimez-la d'IE à l'aide d'IECC. -->
            	  <!--[if !IE]>-->
            	  <object type="application/x-shockwave-flash" data="swf/dance_girl2.swf" width="410" height="430">
            	    <!--<![endif]-->
            	    <param name="quality" value="high" />
            	    <param name="wmode" value="transparent" />
            	    <param name="swfversion" value="6.0.65.0" />
            	    <param name="expressinstall" value="js/expressInstall.swf" />
            	    <!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
            	    <div>
            	      <img src="imgs/alt_flash2.png" width="410" height="430" alt="Dance girl" />
          	      </div>
            	    <!--[if !IE]>-->
          	    </object>
            	  <!--<![endif]-->
          	  </object>
       	   </div>
        </div>
        <!-- FIN CONTENU -->
        <div id="footer">  
    	<?php include('footer.php'); ?>
            <div id="referencement">
            <p class="testsec"></p>
            </div>
        </div><!-- FIN FOOTER -->
    </div> <!-- FIN CONTAINER -->
    <script type="text/javascript">
    <!--
    swfobject.registerObject("FlashID");
    //-->
    </script>
    </body>
    </html>
    Voici la page de validation 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
    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Page validation formulaire</title>
    <!--[if lte IE 7]>
    	<link type="text/css" rel="stylesheet" href="css/style-ie.css" />
    <![endif]-->
     
    <link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
    <script type="text/javascript" src="js/shadowbox.js"></script>
    <script src="js/swfobject_modified.js" type="text/javascript"></script>
     
    <script type="text/javascript">
    Shadowbox.init({ 
    		});
    </script>
     
    </head>
     
    <?php 
     
    $prenom = isset($_POST['prenom']) ? utf8_decode($_POST['prenom']) : '';
    $nom = isset($_POST['nom']) ? utf8_decode($_POST['nom']) : '';
    $adresse = isset($_POST['adresse']) ? utf8_decode($_POST['adresse']) : '';
    $ville = isset($_POST['ville']) ? utf8_decode($_POST['ville']) : '';
    $phone = isset($_POST['phone']) ? utf8_decode($_POST['phone']) : '';
    $email = isset($_POST['email']) ? utf8_decode($_POST['email']) : '';
    $message = isset($_POST['message']) ? utf8_decode($_POST['message']) : '';
    $today = date("d-m-y H:i:s");
     
    	  // destinataires
         $to  = '[email protected]'; // E-MAIL DE DESTINATION DU FORMULAIRE //  
         // Sujet
         $subject = 'Formulaire Contact';
         // message
         $message = '
         <html>
          <head>
           <title>Un formulaire de contact a était rempli</title>
          </head>
          <body>
           <h2>Informations du contact :</h2>
    	   <p style="color:#F00">Message provenant du formulaire de contact</p>
           <p>Date du message : '.$today.'</p>
    	   <p>Prenom : '.$prenom.'</p>		   
    	   <p>Nom : '.$nom.'</p>
    	   <p>Adresse : '.$adresse.'</p>
    	   <p>Ville : '.$ville.'</p>
    	   <p>Phone : '.$phone.'</p>
    	   <p>Email : '.$email.'</p>
    	   <h2>Message : </h2>
    	   <p>'.$message.'</p>
          </body>
         </html>
         ';	
     
         // En-tête Content-type
         $headers  = 'MIME-Version: 1.0' . "\r\n";
         $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     
         // En-têtes additionnels
         $headers .= 'From: '.$email.'' . "\r\n";
     
         // Envoi
         mail($to, $subject, $message, $headers); 
    ?>
     
    <body>
    <div id="container">
    	<div id="musique">
     
        <div id="lang"> 
          <a href="en/"><img src="imgs/en.png" width="16" height="11" alt="vers la version en Anglais" /></a>
          </div>  <!--FIN DE LANGUE-->
        </div>
    	<div id="menu">
    		<?php include('menu.php'); ?>
        </div> 
    	<!-- FIN MENU -->
    <div id="contenu-contact">
        	<div id="global">
            	<div id="contact"> 
     
     
     
     
    	    		<img style="margin:75px 50px 25px;" src="imgs/validation_img.png" width="483" height="31" alt="votre message à bien été envoyé" />
     
            </div> <!--FIN DE CONTACT-->
    		</div>
            <div id="flash">
           	  <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="410" height="430" id="FlashID" title="Dance girl">
            	  <param name="movie" value="swf/dance_girl2.swf" />
            	  <param name="quality" value="high" />
            	  <param name="wmode" value="transparent" />
            	  <param name="swfversion" value="6.0.65.0" />
            	  <!-- La balise <object> suivante est destinée aux navigateurs autres qu'IE. Supprimez-la d'IE à l'aide d'IECC. -->
            	  <!--[if !IE]>-->
            	  <object type="application/x-shockwave-flash" data="swf/dance_girl2.swf" width="410" height="430">
            	    <!--<![endif]-->
            	    <param name="quality" value="high" />
            	    <param name="wmode" value="transparent" />
            	    <param name="swfversion" value="6.0.65.0" />
            	    <param name="expressinstall" value="js/expressInstall.swf" />
            	    <!-- Le navigateur affichera le contenu alternatif suivant pour les utilisateurs d'un lecteur Flash de version 6.0 ou de versions plus anciennes. -->
            	    <div>
            	      <img src="imgs/alt_flash2.png" width="410" height="430" alt="Dance girl" />
          	      </div>
            	    <!--[if !IE]>-->
          	    </object>
            	  <!--<![endif]-->
          	  </object>
       	   </div>
        </div>
        <!-- FIN CONTENU -->
        <div id="footer">  
    	<?php include('footer.php'); ?>
            <div id="referencement">
            <p class="testsec"></p>
            </div>
        </div><!-- FIN FOOTER -->
    </div> <!-- FIN CONTAINER -->
    <script type="text/javascript">
    <!--
    swfobject.registerObject("FlashID");
    //-->
    </script>
    </body>
    </html>

  2. #2
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Bonjour,

    une protection JavaScript n'est d'aucune efficacit� face � un robot spammeur, pour la simple et bonne raison que la plupart des robots fonctionnent sans JavaScript.

    Je t'invite � jeter un �il au site Comment activer JavaScript et faire l'inverse des manipulations indiqu�es, afin de d�sactiver JavaScript dans ton navigateur et te rendre compte toi-m�me que tes protections ne marchent pas.

    Tu n'as aucune proc�dure de v�rification c�t� serveur, ce qui signifie tout simplement ceci : d�s lors que ta page de validation re�oit une requ�te HTTP, quelle que soit son origine et quels quel soient les param�tres (et m�me quelle que soit la m�thode, GET ou POST), le mail sera envoy� !

    En effet, je r�sume ton code :
    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- ... du code HTML -->
    <?php
    $variable = isset($_POST['variable']) ? blabla($_POST['variable']) : ''; // chaîne vide par défaut
     
    // ... initialisation des paramètres du mail
     
    mail(...);
     
    ?>
    <!-- ... du code HTML -->

    Si ce script PHP re�oit une requ�te GET avec aucun param�tre, toutes tes variables seront initialis�es � '' et ceci explique tr�s probablement pourquoi tu re�ois des mails avec des champs vides.

    [Edit]
    En fait, puisque ton mail est envoy� sur une simple requ�te GET, les mails que tu re�ois ne sont m�me pas du spam intentionnel : une visite du robot d'indexation de Google, par exemple, provoque l'envoi du mail.
    [/Edit]

    Ton captcha ne peut pas non plus te prot�ger tant que tu ne le v�rifies pas c�t� serveur.

    Ton champ cach� avec display: none est �galement inefficace pour une autre raison. Une partie des robots fonctionne sur le principe brute force : ils essayent toutes les combinaisons possibles. M�me un robot avec JavaScript activ�, qui serait bloqu� par ta faible protection, arriverait par hasard � remplir des valeurs bidon dans tous les champs sauf celui-ci.

    Il faut comprendre comment fonctionnent les robots spammeurs. Seuls les robots les plus complexes utilisent un navigateur. Pour les autres, il peut s'agir de simples scripts Python, Perl ou simplement Shell, reposant par exemple sur l'outil wget et une expression r�guli�re pour rep�rer les champs de formulaire dans le code HTML. Ensuite, ils envoient un certain nombre de requ�tes HTTP en variant les param�tres et, pour peu que ton site envoie un message de confirmation (ce qui est le cas), ils peuvent enregistrer la configuration de param�tres qui a march� pour la r�utiliser ult�rieurement.

    Prends un marteau et un burin et enfonce-toi ce principe du d�veloppement web bien profond dans ton cerveau :
    on ne peut pas faire confiance aux donn�es provenant du client ; toujours (re)faire toutes les v�rifications c�t� serveur.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  3. #3
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Bonjour,

    Merci de ta r�ponse,

    Si je comprends bien, la premi�re chose � faire dans mon cas est de mettre en place une v�rification PHP sur la page de validation du formulaire.

    => il faut que je teste si les champs de mon formulaire sont vide. Si c'est le cas, je n�envoie pas le mail.

    Je vais faire cela, je r�glerai le probl�me des SPAM apr�s!

    Merci !

  4. #4
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    je teste si les champs de mon formulaire sont vide
    C'est tr�s loin d'�tre suffisant.
    V�rifier �a, �a sert uniquement pour les utilisateurs bien intentionn�s, il reste � prendre en compte tous ceux qui ne le sont pas et donc v�rifier ce que contiennent tous tes champs.
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  5. #5
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Tu peux d�j� v�rifier que la requ�te provient de ton formulaire en regardant la valeur de $_POST['submit']. Si l'utilisateur a fait les choses normalement, cette valeur est la value de ton <input type="submit">, soit "Envoyer". Mais il est courant de regarder simplement si la variable existe :
    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    if (isset($_POST['submit']))
    C'est un bout de code qu'on retrouve tr�s souvent.

    Ensuite, examine la valeur de $_POST['captcha'] pour v�rifier que le captcha est bon.

    Pour les autres champs, Bovino l'a dit, il faut v�rifier qu'ils correspondent aux plages de valeurs attendues. Tu peux �tre plus ou moins restrictif. Quelques exemples :
    • le pr�nom ne peut pas contenir d'espaces ni de caract�res sp�ciaux, � l'exception du trait d'union (attention tout de m�me � autoriser les accents)
    • Le num�ro de t�l�phone doit contenir 10 chiffres (ou 11 si format international commen�ant par +) �ventuellement s�par�s par un signe (espace, point ou autre)
    • l'email doit valider une expression r�guli�re d'email
    • le message peut-il contenir du code HTML ? Si oui, peut-il contenir des balises <script> ? Voir strip_tags
    • etc.

    Ce ne sont que des pistes de r�flexion. Mettre en �uvre toutes ces v�rifications n'est pas forc�ment utile compte tenu de la complexit� de certaines (je pense notamment � la gestion des accents avec les regexps).
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  6. #6
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Ok, je vais proc�der par �tape...

    La deuxi�me �tape consistera donc comme vous le dites, � v�rifier le contenu des champs. Mais je vais d�j� faire les v�rifications de base : tester l�existence des champs.

    Voici l'�tape (1), est-ce que cela est ok ? (j'ai pas touch� de PHP depuis un bail...)

    Code php : 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
    if((isset($_POST['submit']))
    else { echo "erreur transmission variable";}
     
    if(isset($_POST['captcha'])) && $_POST['captcha'] = 5;
    else {echo "erreur captcha";}
     
    if(isset($_POST['prenom'])) 
    	{$prenom = $_POST['prenom'];} 
    else{ echo "erreur transmission variable";}
     
    if(!empty($_POST['nom'])) //champ obligatoire
    	{$nom = $_POST['nom'];} 
    else{ echo "Champ nom obligatoire!";}
     
    if(isset($_POST['adresse']))
    	{$adresse = $_POST['adresse'];} 
    else{ echo "erreur transmission variable";}
     
    if(isset($_POST['ville']))
    	{$ville = $_POST['ville'];} 
    else{ echo "erreur transmission variable";}
     
    if(isset($_POST['phone']))
    	{$phone = $_POST['phone'];} 
    else{ echo "erreur transmission variable";}
     
    if(!empty($_POST['email'])) //champ obligatoire
    	{$email = $_POST['email'];} 
    else{ echo "Champ email obligatoire!";}
     
    if(!empty($_POST['message'])) //champ obligatoire
    	{$message = $_POST['message'];}
    else{ echo "Champ email obligatoire!";}

    PS : il y a trois champs obligatoires

  7. #7
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Code php : S�lectionner tout - Visualiser dans une fen�tre � part
    if(isset($_POST['captcha'])) && $_POST['captcha'] = 5;
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  8. #8
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Comme �a plut�t ?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    if(isset($_POST['captcha']) && $_POST['captcha']=5)
    else { echo "erreur captcha";}

  9. #9
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Voir Yoda conditions : tu as l'erreur et la solution en m�me temps
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  10. #10
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    J'ai fait une erreur sur l'op�rateur, c'est "==" et non "=" :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    if(isset($_POST['captcha']) && $_POST['captcha'] == 5)
    else { echo "erreur captcha";}

  11. #11
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Salut,

    Je viens de mettre en place la nouvelle page de validation mais lorsque j'envois le formulaire j'obtiens une page blanche et je ne re�oit rien par e-mail.
    On dirait que le serveur n'arrive pas � ex�cuter le code...

    Code php : 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
    if((isset($_POST['submit']))
    else { echo "erreur transmission variable";}
     
    if(isset($_POST['captcha']) && $_POST['captcha'] == 5)
    else { echo "erreur captcha";}
     
    if(isset($_POST['prenom'])) 
    	{$prenom = $_POST['prenom'];} 
    else{ echo "erreur transmission variable";}
     
    if(!empty($_POST['nom'])) //champ obligatoire
    	{$nom = $_POST['nom'];} 
    else{ echo "Champ nom obligatoire!";}
     
    if(isset($_POST['adresse']))
    	{$adresse = $_POST['adresse'];} 
    else{ echo "erreur transmission variable";}
     
    if(isset($_POST['ville']))
    	{$ville = $_POST['ville'];} 
    else{ echo "erreur transmission variable";}
     
    if(isset($_POST['phone']))
    	{$phone = $_POST['phone'];} 
    else{ echo "erreur transmission variable";}
     
    if(!empty($_POST['email'])) //champ obligatoire
    	{$email = $_POST['email'];} 
    else{ echo "Champ email obligatoire!";}
     
    if(!empty($_POST['message'])) //champ obligatoire
    	{$message = $_POST['message'];}
    else{ echo "Champ email obligatoire!";}

    Merci � vous !

  12. #12
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    Il n'y a rien dans tes if...
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  13. #13
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Coup de main : phpbeautifier.com
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  14. #14
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Voil� le nouveau code de v�rification corrig�, j'obtiens toujours une page blanche apr�s l'envoi du formulaire :

    Code php : 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
    if (isset($_POST['prenom'])){
    $prenom = $_POST['prenom'];
    }
      else{
    echo "erreur transmission variable";
    }
    if (!empty($_POST['nom'])){ //champ obligatoire
    $nom = $_POST['nom'];
    }
      else{
    echo "Champ nom obligatoire!";
    }
    if (isset($_POST['adresse'])){
    $adresse = $_POST['adresse'];
    }
      else{
    echo "erreur transmission variable";
    }
    if (isset($_POST['ville'])){
    $ville = $_POST['ville'];
    }
      else{
    echo "erreur transmission variable";
    }
    if (isset($_POST['phone'])){
    $phone = $_POST['phone'];
    }
      else{
    echo "erreur transmission variable";
    }
    if (!empty($_POST['email'])){ //champ obligatoire
    $email = $_POST['email'];
    }
      else{
    echo "Champ email obligatoire!";
    }
    if (!empty($_POST['message'])){ //champ obligatoire
    $message = $_POST['message'];
    }
      else{
    echo "Champ email obligatoire!";
    }
    if ((isset($_POST['submit'])){
    $submit = $_POST['submit'];
    }
      else{
    echo "erreur transmission variable";
    }
    if (isset($_POST['captcha']) && $_POST['captcha'] == 5){
    $captcha = $_POST['captcha'];
    }
      else{
    echo "erreur captcha";
    }

  15. #15
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Il y a des erreurs de syntaxe dans ton code. Des parenth�ses en trop. Et ton indexation est toujours bizarre ; r�essaye le PHP Beautifier avec le style K&R, personnellement je trouve �a plus clair.

    Normalement, quand il y a une erreur de syntaxe, l'interpr�teur PHP affiche une parse error et te donne un num�ro de ligne. Si tu ne vois pas les messages d'erreur, c'est que tu as mal configur� ton serveur. Ajoute ceci au tout d�but de ton script :
    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    <?php
    error_reporting(-1);
    Voir error_reporting. Note que c'est une solution temporaire : tu dois trouver comment configurer ton serveur de d�veloppement pour afficher les erreurs. (Le serveur de production, lui, ne doit pas les afficher.)

    Quant � la logique du script, tu n'y es pas encore tout � fait.

    Le param�tre submit n'est pas un param�tre POST comme les autres : il est celui qui t'indique si, dans le cas d'une requ�te l�gitime envoy�e par un utilisateur sans mauvaises intentions, le formulaire a �t� utilis� de la fa�on pr�vue. L'utilisateur a rempli un certain nombre de champs, en a peut-�tre oubli� quelques uns, mal rempli d'autres ; dans tous les cas, il a fini par cliquer sur le bouton submit (ou par appuyer sur la touche entr�e, ce qui revient au m�me). Ce param�tre te sert � identifier le cas normal d'utilisation de ta page :

    A. L'utilisateur a envoy� une requ�te POST avec le bouton submit

    Tous les autre cas, tu n'as pas besoin de les traiter et tu peux simplement les rejeter :

    B1. Un utilisateur (mal intentionn�) a forg� une requ�te POST pour tenter d'abuser ton script
    B2. Un utilisateur ou un robot d'indexation a envoy� une requ�te GET � ton script (visite normale)

    Tu dois donc structurer ton script comme ceci :
    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if (isset($_POST['submit'])) {
     
       // cas normal : requête POST légitime (a priori : il reste des contrôles à faire sur les champs)
       ...
     
    } else {
     
       // autres cas : ne rien faire (afficher une page vide), ou bien afficher un bref message d'erreur
       ...
     
    }
    Si tu g�res un fichier robots.txt tu dois y indiquer que la page de validation de ton formulaire ne doit pas �tre index�e. Ainsi tu �viteras les requ�tes GET des robots d'indexation.

    Dernier point : c'est bien de tester les champs obligatoires avec empty. Mais attention, une cha�ne qui ne contient que des espaces (par exemple ' ') n'est pas consid�r�e comme vide. Je te conseille d'utiliser trim. Lis la doc de empty, il y a un avertissement � propos de trim pour les versions de PHP inf�rieurs � 5.5.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  16. #16
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Salut,

    Merci beaucoup pour ton aide ! C'est d�j� beaucoup plus clair pour moi !

    J'avance petit � petit, voici la nouvelle version de mon code :

    Code php : 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
    <?php
    if (isset($_POST['submit'])) {
    // cas normal : requête POST légitime
    if (isset($_POST['prenom'])) {
    $prenom = $_POST['prenom'];
    }
    if (!empty($_POST['nom'])) //champ obligatoire
    {
    $nom = $_POST['nom'];
    }
     
    if (isset($_POST['adresse'])) {
    $adresse = $_POST['adresse'];
    }
     
    if (isset($_POST['ville'])) {
    $ville = $_POST['ville'];
    }
     
    if (isset($_POST['phone'])) {
    $phone = $_POST['phone'];
    }
     
    if (!empty($_POST['email'])) //champ obligatoire
    {
    $email = $_POST['email'];
    }
     
    if (!empty($_POST['message'])) //champ obligatoire
    {
    $message = $_POST['message'];
    }
     
    if (isset($_POST['captcha']) && $_POST['captcha'] == 5) {
    $captcha = $_POST['captcha'];
    }
     
    // envoi du formulaire
     
    $today = date("d-m-y H:i:s");
     
    // destinataires
     
    $to = '[email protected]';
     
    // Sujet
     
    $subject = 'Formulaire Contact FR';
     
    // message
     
    $message = '
         <html>
          <head>
           <title>Un formulaire de contact a était remplie</title>
          </head>
          <body>
           <h2>Informations du contact :</h2>
       <p style="color:#F00">Message provenant du formulaire de contact </p>
           <p>Date du message : ' . $today . '</p>
       <p>Prenom : ' . $prenom . '</p>    
       <p>Nom : ' . $nom . '</p>
       <p>Adresse : ' . $adresse . '</p>
       <p>Ville : ' . $ville . '</p>
       <p>Phone : ' . $phone . '</p>
       <p>Email : ' . $email . '</p>
       <h2>Message : </h2>
       <p>' . $message . '</p>
          </body>
         </html>
         ';
     
    // En-tête Content-type
     
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     
    // En-têtes additionnels
     
    $headers.= 'From: ' . $email . '' . "\r\n";
     
    // Envoi
     
    mail($to, $subject, $message, $headers);
    echo "<body><p><span style=\"color:white;\">Formulaire envoye</span></p></body>";
    }
    else {
     
    // autres cas : afficher un bref message d'erreur
     
    echo "<body><p><span style=\"color:white;\">Erreur dans les champs du formulaire.</span></p></body>";
    }
     
    ?>

    Petit soucis : le message est envoy� m�me si tous les champs sont vides

    Tu devrais vite trouver l'erreur.

    Merci ! A++

  17. #17
    R�dacteur

    Avatar de Bovino
    Homme Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activit� : D�veloppeur Web
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par d�faut
    A aucun moment tu n'indiques de conditions pour l'envoi du mail, donc je ne vois pas pourquoi il ne serait pas envoy�...

    EDIT
    Enfin... � part avec isset($_POST['submit']) une fois qu'on prend en compte que tu n'indentes pas ton code...
    Pas de question technique par MP !
    Tout le monde peut participer � developpez.com, vous avez une id�e, contactez-moi !
    Mes formations video2brain : La formation compl�te sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'int�gration de JSFiddle et CodePen sur le forum

  18. #18
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Ok merci !

    Cette fois si je crois que je suis bon, cela fonctionne:

    Code php : 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
    <?php
    if (isset($_POST['submit']) && isset($_POST['prenom']) 
    && !empty($_POST['nom']) && isset($_POST['adresse']) 
    && isset($_POST['ville']) && isset($_POST['phone']) 
    && !empty($_POST['email']) && !empty($_POST['message']) 
    && isset($_POST['captcha']) && $_POST['captcha'] == 5){
     
    $prenom = $_POST['prenom'];
    $nom = $_POST['nom'];
    $adresse = $_POST['adresse'];
    $ville = $_POST['ville'];
    $phone = $_POST['phone'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $captcha = $_POST['captcha'];
     
    // envoi du formulaire
     
    $today = date("d-m-y H:i:s");
     
    // destinataires
     
    $to = '[email protected]'; // ne pas oublier la virgule
     
    // Sujet
     
    $subject = 'Formulaire Contact FR';
     
    // message
     
    $message = '
         <html>
          <head>
           <title>Un formulaire de contact a été rempli</title>
          </head>
          <body>
           <h2>Informations du contact :</h2>
       <p style="color:#F00">Message provenant du formulaire de contact</p>
           <p>Date du message : ' . $today . '</p>
       <p>Prenom : ' . $prenom . '</p>    
       <p>Nom : ' . $nom . '</p>
       <p>Adresse : ' . $adresse . '</p>
       <p>Ville : ' . $ville . '</p>
       <p>Phone : ' . $phone . '</p>
       <p>Email : ' . $email . '</p>
       <h2>Message : </h2>
       <p>' . $message . '</p>
          </body>
         </html>
         ';
     
    // En-tête Content-type
     
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers.= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
     
    // En-têtes additionnels
     
    $headers.= 'From: ' . $email . '' . "\r\n";
     
    // Envoi
     
    mail($to, $subject, $message, $headers);
    echo "<body><p><span style=\"color:white;\">Formulaire envoye</span></p></body>";
    }
    else {
    // autres cas : afficher un bref message d'erreur
    echo "<body><p><span style=\"color:white;\">Erreur dans les champs du formulaire.</span></p></body>";
    }
    ?>

  19. #19
    Expert confirm�
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activit� : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par d�faut
    Ok �a fonctionne, tu as fait la moiti� du chemin Maintenant il faut �liminer les bugs. Et il y en a !

    Pour commencer, il faut que tu nettoies tes variables, on en a d�j� parl�. Surtout que ton email est au format HTML, ce qui permet l'injection de scripts, et je ne sais pas o� en sont les clients de messagerie au niveau s�curit� JavaScript, mais il vaut mieux ne pas se reposer dessus. N'oublie pas strip_tags ; cette fonction a un second param�tre qui te permet d'autoriser certaines balises. Remarque : le CSS est aussi un vecteur d'attaque, et il serait prudent d'�liminer les attributs style, mais c'est d�j� un peu plus compliqu� (� moins qu'il existe une fonction PHP pour �a que je ne connaisse pas), c'est pourquoi, en g�n�ral, les d�veloppeurs pr�f�rent n'autoriser aucune balise.

    Ensuite, garde le test sur la valeur $_POST['submit'] � part. En le joignant aux tests des autres valeurs, tu perds l'information sur la l�gitimit� de la requ�te. Dans le else, tu sais seulement que :
    • ou bien un champ obligatoire n'a pas �t� rempli (!empty(...))
    • ou bien un champ n'a pas �t� envoy� (isset(...))
    • ou bien le captcha est incorrect
    • ou bien le bouton submit n'a pas �t� utilis�

    Mais tu ne sais pas lesquelles de ces conditions sont vraies ou fausses.

    Je te conseille de commencer par le cas d'erreur, souvent beaucoup plus court, ce qui te permet d'avoir toujours le if sous les yeux quand tu arrives au else.

    Code PHP : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    if (!isset($_POST['submit'])) {
       // ici tu sais que le bouton submit n'a pas été utilisé
       ...
    } else {
       if ( !(isset($_POST['prenom']) && ...) ) {
          echo "<body><p><span style=\"color:white;\">Erreur dans les champs du formulaire.</span></p></body>";
       } else {
          // tout va bien
          ...
          mail(...);
       }
    }

    Dernier truc : tu vas avoir un probl�me de charset. Ton formulaire se trouve dans une page que tu as d�clar�e en UTF-8 ; tu envoies ton email avec ISO-8859-1. La solution la plus simple est de changer l'en-t�te de l'email. Mais tu peux aussi jeter un �il � utf8_decode.
    La FAQ JavaScript � Les cours JavaScript
    Touche F12 = la console → l�outil indispensable pour d�velopper en JavaScript !

  20. #20
    Membre �clair� Avatar de bond70
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    300
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 300
    Par d�faut
    Ok merci beaucoup pour ton aide, je vais m'y mettre !

Discussions similaires

  1. Afficher des champs cach�s dans un for each
    Par rvm31 dans le forum G�n�ral JavaScript
    R�ponses: 3
    Dernier message: 22/11/2013, 21h30
  2. [AC-2010] Faire apparaitre des champs cach�s
    Par Oreo_ dans le forum IHM
    R�ponses: 8
    Dernier message: 06/05/2012, 22h19
  3. R�ponses: 1
    Dernier message: 01/05/2008, 00h10
  4. VB6 simuler un click sur des Champs cach�s
    Par mqsi dans le forum VB 6 et ant�rieur
    R�ponses: 0
    Dernier message: 09/10/2007, 14h06

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