Formulaire : verification par mail

Formulaire : verification par mail - PHP - Programmation

Marsh Posté le 21-06-2013 à 18:06:24    

Bonjour  !
J'ai créé un formulaire au sujet d'un jeu vidéo :
 

Code :
  1. <form method="post" action="traitementbo.php">
  2.    <p>
  3.     <label for="race">Race</label>
  4.     <select name="race" class="formbo" id="race">
  5.      <option value="Terran">Terran</option>
  6.      <option value="Protoss">Protoss</option>
  7.      <option value="Zerg">Zerg</option>
  8.     </select>
  9.     <br /><br />
  10.    <label for="namebo">Nom du BO</label> : <input type="text" class="formbo" size="23" id="namebo" name="namebo" /> <br />
  11.    <label for="son_email">Email</label> : <input type="text" class="formbo" size="29" id="son_email" name="son_email" placeholder="Tapez l'email de votre compte" /> <br />
  12.    <label for="son_pseudo">Pseudo</label> : <input type="text" class="formbo" size="28" id="son_pseudo" name="son_pseudo" placeholder="Tapez le pseudo votre compte" />
  13.    <p> Build Orders <br /><br />
  14.    <input class="formbo" type="number" min="6" max="80" value="6" name="champ[]" > <input class="formbo" type="text" placeholder="Unité,batiment,amélioration..." size="30" name="champ[]" > <input class="formbo" type="text" placeholder="Commentaires supplémentaires..." size="30" name="champ[]" /><br />
  15.    <input class="formbo" type="number" min="5" max="80" value="7" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  16.    <input class="formbo" type="number" min="5" max="80" value="8" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  17.    <input class="formbo" type="number" min="5" max="80" value="9" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  18.    <input class="formbo" type="number" min="5" max="80" value="10" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  19.    <input class="formbo" type="number" min="5" max="80" value="11" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  20.    <input class="formbo" type="number" min="5" max="80" value="12" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  21.    <input class="formbo" type="number" min="5" max="80" value="13" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  22.    <input class="formbo" type="number" min="5" max="80" value="14" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  23.    <input class="formbo" type="number" min="5" max="80" value="15" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  24.    <input class="formbo" type="number" min="5" max="80" value="16" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  25.    <input class="formbo" type="number" min="5" max="80" value="17" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  26.    <input class="formbo" type="number" min="5" max="80" value="18" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  27.    <input class="formbo" type="number" min="5" max="80" value="19" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  28.    <input class="formbo" type="number" min="5" max="80" value="20" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  29.    <input class="formbo" type="number" min="5" max="80" value="21" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  30.    <input class="formbo" type="number" min="5" max="80" value="22" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  31.    <input type="submit" name="envoyer" value="Envoyer le BO" class="button" id="valid">
  32.    <script>
  33.    function afficher_div_masque() {
  34.    var formnonvisible = document.getElementById("formnonvisible" );
  35.    formnonvisible.style.display = "block";
  36.            }
  37.    </script>
  38.    <p><a href="#nogo" title="Plus d'infos" onclick="afficher_div_masque()" class="surbrillancetexte">Plus d'infos</a></p>
  39.    <div id="formnonvisible" style="display:none;">
  40.     <p>
  41.     <input class="formbo" type="number" min="5" max="80" value="23" name="champ[]" > <input class="formbo" type="text" placeholder="Unité,batiment,amélioration..." size="30" name="champ[]" ><input class="formbo" type="text" placeholder="Commentaires supplémentaires..." size="30" name="champ[]" /><br />
  42.     <input class="formbo" type="number" min="5" max="80" value="24" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  43.     <input class="formbo" type="number" min="5" max="80" value="25" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  44.     <input class="formbo" type="number" min="5" max="80" value="26" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  45.     <input class="formbo" type="number" min="5" max="80" value="27" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  46.     <input class="formbo" type="number" min="5" max="80" value="28" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  47.     <input class="formbo" type="number" min="5" max="80" value="29" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  48.     <input class="formbo" type="number" min="5" max="80" value="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  49.     <input class="formbo" type="number" min="5" max="80" value="31" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  50.     <input class="formbo" type="number" min="5" max="80" value="32" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  51.     <input class="formbo" type="number" min="5" max="80" value="33" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  52.     <input class="formbo" type="number" min="5" max="80" value="34" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  53.     <input class="formbo" type="number" min="5" max="80" value="35" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  54.     <input class="formbo" type="number" min="5" max="80" value="36" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  55.     <input class="formbo" type="number" min="5" max="80" value="37" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  56.     <input class="formbo" type="number" min="5" max="80" value="38" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  57.     <input class="formbo" type="number" min="5" max="80" value="39" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br />
  58.     <input class="formbo" type="number" min="5" max="80" value="40" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" > <input class="formbo" type="text" size="30" name="champ[]" /><br /><br />
  59.     <input type="submit" name="connect" value="Envoyer le BO" class="button" id="valid" >
  60.     </p>
  61.    </div>
  62.    </p>
  63.   </form>


 
Mon problème est au niveau du traitement :

Code :
  1. <?php
  2. if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
  3. $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
  4. // On récupère les champs du formulaire, et on arrange leur mise en forme
  5. if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"]));
  6. if (isset($_POST["race"])) $_POST["race"]=trim(stripslashes($_POST["race"]));
  7. if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"]));
  8. if (isset($_POST["namebo"])) $_POST["namebo"]=trim(stripslashes($_POST["namebo"]));
  9. if (isset($_POST["champ[]"])) $_POST["champ[]"]=trim(stripslashes($_POST["champ[]"]));
  10. // Après la mise en forme, on vérifie la validité des champs
  11. if (empty($_POST["race"])) { // L'utilisateur n'a pas rempli le champ race
  12.  $erreur="Vous n'avez pas entr&eacute; la race..."; // On met dans erreur le message qui sera affiché
  13. }
  14. elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
  15.  $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
  16. }
  17. elseif (empty($_POST["son_pseudo"])) { // L'utilisateur n'a pas rempli le champ pseudo
  18.  $erreur="Nous avons besoin de votre pseudo pour vous r&eacute;pondre...";
  19. }
  20. elseif (empty($_POST["namebo"])) { // L'utilisateur n'a pas rempli le champ nom du bo
  21.  $erreur="Vous devez entrer le nom de votre BO...";
  22. }
  23. else { // Si tous les champs sont valides, on change l'état à ok
  24.  $etat="ok";
  25. }
  26. }
  27. else { // Sinon le formulaire n'a pas été soumis
  28. $etat="attente"; // On passe donc dans l'état attente
  29. }
  30. if ($etat!="ok" ){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
  31. if ($etat=="erreur" ){ // Cas où le formulaire a été soumis mais il y a des erreurs
  32.  echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
  33. }
  34. }
  35. else { // Sinon l'état est ok donc on envoie le mail
  36. $race = $_POST["race"]; // On stocke les variables récupérées du formulaire
  37. $namebo = $_POST["namebo"];
  38. $champ = $_POST["champ[]"];
  39. $son_email = $_POST["son_email"];
  40. $son_pseudo = $_POST["son_pseudo"];
  41. $mon_email = "gwebmastersc2@gmail.com"; // Mise en forme du message  
  42. $mon_pseudo = "gwebmaster";
  43. $mon_url = "/test3/index.html";
  44. $msg_pour_moi = "- Race : $race \n
  45. - Son E-mail : $son_email \n
  46. - Son pseudo : $son_pseudo \n
  47. - Nom du BO : $namebo \n
  48. - Build Orders : \n $champ \n\n";
  49. // Mise en forme de l'accusé réception qu'il recevra
  50. $accuse_pour_lui = "Bonjour $son_pseudo,\n
  51. Votre BO nous a bien été envoyé et nous tâcherons de le publier le plus rapidement possible.\n\n
  52. - Votre bo : $namebo \n
  53. Merci et à bientôt sur http://monfutursite.fr !";
  54. // Envoie du mail
  55. $entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n"; // On prépare l'entête du message
  56. $entete .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
  57. $entete .='Content-Transfer-Encoding: 8bit';
  58. if (mail($mon_email,$namebo,$msg_pour_moi,$entete) && mail($son_email,$namebo,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
  59.  echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute; envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
  60.  echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
  61. }
  62. else { // Sinon il y a eu une erreur lors de l'envoi
  63.  echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
  64.  echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
  65. }
  66. }
  67. ?>


 
Etant donné que j'ai beaucoup de fois le même champ à faire remplir , je ne sais pas comment les envoyer sans les nommer différemment un par un . On m'a suggéré d'utiliser foreach() avec name="champ[]" pour tous les champs identiques mais je n'y arrive pas ... comment faire ?  :??:  
 
Merci d'avance et bonne soirée  :)  
 

Reply

Marsh Posté le 21-06-2013 à 18:06:24   

Reply

Marsh Posté le 25-07-2013 à 14:02:16    

Bonjour,
j'ai corrigé des lignes 38 a 50 en rajoutant un foreach et en recuperant tes champs
 

Citation :

   <?php
    if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
    $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur
    // On récupère les champs du formulaire, et on arrange leur mise en forme
    if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"]));
    if (isset($_POST["race"])) $_POST["race"]=trim(stripslashes($_POST["race"]));
    if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"]));
    if (isset($_POST["namebo"])) $_POST["namebo"]=trim(stripslashes($_POST["namebo"]));
    if (isset($_POST["champ[]"])) $_POST["champ[]"]=trim(stripslashes($_POST["champ[]"]));
    // Après la mise en forme, on vérifie la validité des champs
    if (empty($_POST["race"])) { // L'utilisateur n'a pas rempli le champ race
     $erreur="Vous n'avez pas entr&eacute; la race..."; // On met dans erreur le message qui sera affiché
    }
    elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
     $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
    }
    elseif (empty($_POST["son_pseudo"])) { // L'utilisateur n'a pas rempli le champ pseudo
     $erreur="Nous avons besoin de votre pseudo pour vous r&eacute;pondre...";
    }
    elseif (empty($_POST["namebo"])) { // L'utilisateur n'a pas rempli le champ nom du bo
     $erreur="Vous devez entrer le nom de votre BO...";
    }
    else { // Si tous les champs sont valides, on change l'état à ok
     $etat="ok";
    }
    }
    else { // Sinon le formulaire n'a pas été soumis
    $etat="attente"; // On passe donc dans l'état attente
    }
    if ($etat!="ok" ){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur" ){ // Cas où le formulaire a été soumis mais il y a des erreurs
     echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
    }
    }
    else { // Sinon l'état est ok donc on envoie le mail
    $race = $_POST["race"]; // On stocke les variables récupérées du formulaire
    $namebo = $_POST["namebo"];
    $champ = $_POST["champ"];
     $build="";
    foreach($champ as $key=>$value){
     $build.=$key." -> ".$value."<br />";          
    }
    $son_email = $_POST["son_email"];
    $son_pseudo = $_POST["son_pseudo"];
    $mon_email = "gwebmastersc2@gmail.com"; // Mise en forme du message  
    $mon_pseudo = "gwebmaster";
    $mon_url = "/test3/index.html";
    $msg_pour_moi = "- Race : $race \n
    - Son E-mail : $son_email \n
    - Son pseudo : $son_pseudo \n
    - Nom du BO : $namebo \n
    - Build Orders : \n $build \n\n";
    // Mise en forme de l'accusé réception qu'il recevra
    $accuse_pour_lui = "Bonjour $son_pseudo,\n
    Votre BO nous a bien été envoyé et nous tâcherons de le publier le plus rapidement possible.\n\n
    - Votre bo : $namebo \n
    Merci et à bientôt sur http://monfutursite.fr !";
    // Envoie du mail
    $entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n"; // On prépare l'entête du message
    $entete .='Content-Type: text/plain; charset="iso-8859-1"'."\n";
    $entete .='Content-Transfer-Encoding: 8bit';
    if (mail($mon_email,$namebo,$msg_pour_moi,$entete) && mail($son_email,$namebo,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
     echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute; envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
     echo "<a href=\"" . $mon_url . "\">Retour</a></p>\n"; // Avec un lien de retour vers l'accueil du site
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
     echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message.\n";
     echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
    }  
    }
    ?>


Message édité par intel-44 le 25-07-2013 à 15:32:25

---------------
Cordialement, Intel
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed