Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoi de données via un formulaire de contact

Envoi vers boîte mail

    1 mars 2021 à 9:14:18

    Bonjour,

    je suis encore novice dans le codage et souhaite envoyer les données d'un formulaire vers ma boîte mail. J'ai construit une page "contact" avec le formulaire en HTML/CSS, et j'ai relié une page PHP "traitement formulaire" au formulaire. Dès que clique sur le bouton envoyer du formulaire, une page blanche avec le code PHP apparaît, et rien n'est envoyé sur ma boîte mail.

    J'ai comparé mon code à différentes sources sur internet, et je n'arrive pas à comprendre pourquoi il ne fonctionne pas. Pouvez-vous regarder mon code et m'aider s'il vous plaît?

    code HTML du formulaire et le code PHP :

    <form method="post" name="formulaire" action="traitement_formulaire.php">
    
    <label for="nom"><em class="police_contact">Nom</em></label>
    <input type="text" id="nom" name="nom">
    
    <label for="mail"><em class="police_contact">Mail</em></label>
    <input type="text" id="mail" name="mail">
    
    <label for="telephone"><em class="police_contact">Téléphone</em></label>
    <input type="text" id="telephone" name="telephone">
    
    <label for="message"><em class="police_contact">Message</em></label>
    <textarea id="message" name="message" style="height:100px"></textarea>
    
    <input type="submit" value="Envoyer">
    
    </form>


    <!doctype html>
    <html>
    
    <head>
    <meta charset="utf-8">
    <title>Envoi d'un message par formulaire</title>
    </head>
    
    <body>
    
    
    <?php
    require('phpmailer/class.phpmailer.php');
    $email_expediteur = 'contact@site.com';
    $nom_expediteur = 'Contact Site.com';
    $destinataire = 'contact@site.fr';
    $copie = 'oui';
    $message_envoye = "Votre message nous est bien parvenu !";
    $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
    $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact copie.html\">envoyer le formulaire</a>.";
    $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
    
    if (!isset($_POST['envoi']))
    {
    echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
    }
    else
    {
    function Rec($text)
    {
    $text = htmlspecialchars(trim($text), ENT_QUOTES);
    if (1 === get_magic_quotes_gpc())
    {
    $text = stripslashes($text);
    }
    $text = nl2br($text);
    return $text;
    };
    function IsEmail($email)
    {
    $value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
    return (($value === 0) || ($value === false)) ? false : true;
    }
    
    $nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
    $email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
    $objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
    $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
    $email = (IsEmail($email)) ? $email : '';
    if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
    {
    
    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
    'Reply-To:'.$email. "\r\n" .
    'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
    'Content-Disposition: inline'. "\r\n" .
    'Content-Transfer-Encoding: 7bit'." \r\n" .
    'X-Mailer:PHP/'.phpversion();
    if ($copie == 'oui')
    {
    $cible = $destinataire.';'.$email;
    }
    else
    {
    $cible = $destinataire;
    };
    $caracteres_speciaux = array('&#039;', '&#8217;', '&quot;', '<br>', '<br />', '&lt;', '&gt;', '&amp;', '…', '&rsquo;', '&lsquo;');
    $caracteres_remplacement = array("'", "'", '"', '', '', '<', '>', '&', '...', '>>', '<<' );
    $objet = html_entity_decode($objet);
    $objet = str_replace($caracteres_speciaux, $caracteres_remplacement, $objet);
    $message = html_entity_decode($message);
    $message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);
    $cible = str_replace(',', ';', $cible);
    $num_emails = 0;
    $tmp = explode(';', $cible);
    foreach($tmp as $email_destinataire)
    {
    if (mail($email_destinataire, $objet, $message, $headers))
    $num_emails++;
    }
    if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
    {
    echo '<p>'.$message_envoye.'</p>';
    }
    else
    {
    echo '<p>'.$message_non_envoye.'</p>';
    };
    }
    else
    {
    echo '<p>'.$message_formulaire_invalide.' <a href="contact copie.html">Retour au formulaire</a></p>'."\n";
    };
    };
    ?>
    
    </body>

    -
    Edité par AxelleGo 1 mars 2021 à 11:57:18

    • Partager sur Facebook
    • Partager sur Twitter
      1 mars 2021 à 10:38:08 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée.


      Pas d'aide concernant le code par MP, le forum est là pour ça :)

        1 mars 2021 à 12:28:08

        Bonjour.

        Une petite lecture de la Faq php

        L'adresse url doit être de type http://fududu et non File://fjfjfj

        • Partager sur Facebook
        • Partager sur Twitter
          2 mars 2021 à 10:22:06

          Bonjour,

          je vous remercie Aurélien.C pour les conseils que vous m'avez donné. Cependant même en lisant la Faq php je n'ai pas réussi à comprendre pourquoi mon code ne fonctionne pas.

          De plus, je vais peut-être paraître débile mais je ne vois pas comment changer l'adresse url, File://fjfjfj n'apparaît pas dans mon code.

          Par contre, j'ai remarqué qu'il y avait des problèmes de concordances entre mon HTML et mon PHP. Je remets le code modifié.

          <form id="contact" method="post" action="traitement_formulaire.php">
                          <p>
                              <label for="nom">Nom :</label>
                              <input type="text" id="nom" name="nom" />
                          </p>
                          <p>
                              <label for="email">Email :</label>
                              <input type="text" id="email" name="email" />
                          </p>
                          <p>
                              <label for="telephone">Téléphone :</label>
                              <input type="text" id="telephone" name="telephone" />
                          </p>
                          <p>
                              <label for="objet">Objet :</label>
                              <input type="text" id="objet" name="objet" />
                          </p>
                          <p>
                              <label for="message">Message :</label>
                              <textarea id="message" name="message" style="height:100px"></textarea>
                          </p>
          
                          <input type="submit" name="envoi" value="Envoyer" />
                      </form>
          <!doctype html>
          <html>
          
          <head>
              <meta charset="utf-8">
              <title>Envoi d'un message par formulaire</title>
          </head>
          
          <body>
          
          
          <?php
          require('phpmailer/class.phpmailer.php');
          $email_expediteur = 'contact@site.com';
          $nom_expediteur = 'Contact Site.com';
          $destinataire = 'contact@site.fr';
          $copie = 'oui';
          $message_envoye = "Votre message nous est bien parvenu !";
          $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
          $message_erreur_formulaire = "Vous devez d'abord <a href=\"contact copie.html\">envoyer le formulaire</a>.";
          $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
          
          if (!isset($_POST['envoi']))
          {
          	echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
          }
          else
          {
          	function Rec($text)
          	{
          		$text = htmlspecialchars(trim($text), ENT_QUOTES);
          		if (1 === get_magic_quotes_gpc())
          		{
          			$text = stripslashes($text);
          		}
           
          		$text = nl2br($text);
          		return $text;
          	};
           
          	function IsEmail($email)
          	{
          		$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
          		return (($value === 0) || ($value === false)) ? false : true;
          	}
          
          	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
          	$email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
          	$telephone   = (isset($_POST['telephone']))   ? Rec($_POST['telephone'])   : '';
          	$objet  = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
          	$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
           
          	$email = (IsEmail($email)) ? $email : ''; 
           
          	if (($nom != '') && ($email != '') && ($telephone != '') && ($objet != '') && ($message != ''))
          	{
          
          		$headers  = 'MIME-Version: 1.0' . "\r\n";
          		$headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
          				'Reply-To:'.$email. "\r\n" .
          				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
          				'Content-Disposition: inline'. "\r\n" .
          				'Content-Transfer-Encoding: 7bit'." \r\n" .
          				'X-Mailer:PHP/'.phpversion();
           
          		if ($copie == 'oui')
          		{
          			$cible = $destinataire.';'.$email;
          		}
          		else
          		{
          			$cible = $destinataire;
          		};
           
          		$caracteres_speciaux     = array('&#039;', '&#8217;', '&quot;', '<br>', '<br />', '&lt;', '&gt;', '&amp;', '…',   '&rsquo;', '&lsquo;');
          		$caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...', '>>',      '<<'     );
           
          		$objet = html_entity_decode($objet);
          		$objet = str_replace($caracteres_speciaux, $caracteres_remplacement, $objet);
           
          		$message = html_entity_decode($message);
          		$message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);
           
          		$cible = str_replace(',', ';', $cible); 
          		$num_emails = 0;
          		$tmp = explode(';', $cible);
          		foreach($tmp as $email_destinataire)
          		{
          			if (mail($email_destinataire, $objet, $message, $headers))
          				$num_emails++;
          		}
           
          		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
          		{
          			echo '<p>'.$message_envoye.'</p>';
          		}
          		else
          		{
          			echo '<p>'.$message_non_envoye.'</p>';
          		};
          	}
          	else
          	{
          		echo '<p>'.$message_formulaire_invalide.' <a href="contact copie.html">Retour au formulaire</a></p>'."\n";
          	};
          };
          ?>
          
          </body>



          • Partager sur Facebook
          • Partager sur Twitter
            2 mars 2021 à 10:49:09

            Bonjour, une page blanche ? As-tu activé les erreurs php ?
            • Partager sur Facebook
            • Partager sur Twitter
            Comar
              2 mars 2021 à 11:07:40

              Qu'elle est ton url complète ?

              Tu passes bien par un serveur pour lire le code php ?

              • Partager sur Facebook
              • Partager sur Twitter
                2 mars 2021 à 11:25:52

                Comar91 a écrit:

                Bonjour, une page blanche ? As-tu activé les erreurs php ?

                Sa page blanche est normale s'il fait seulement un lien vers son fichier traitement.php, il n'y a pas de html dedans juste son code PHP et quelques echos.

                La question est plutôt quel est le retour que tu as sur ta page blanche parmi tes différents echo ?

                Est-ce que tu as $message_envoye ou $message_non_envoye ?

                Aurélien.C a écrit:

                Qu'elle est ton url complète ?

                Tu passes bien par un serveur pour lire le code php ?

                Si tu travailles en local, avec WAMP ou XAMP, tu ne peux pas directement envoyer d'e-mail, et donc c'est "normal".

                Si tu travailles sur un serveur, avec Filezilla et une réelle URL, dans ce cas on peut essayer de débloquer la situation.

                PS : c'est dommage d'utiliser phpmailer puis envoyer le mail via un mail() php ^^

                • Partager sur Facebook
                • Partager sur Twitter
                  2 mars 2021 à 11:37:58

                  Bonjour, @Shonen17 --> mes excuses... Pour moi une page blanche c'est une page blanche donc sans echo.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Comar
                    2 mars 2021 à 11:51:39

                    Comar91 a écrit:

                    Bonjour, @Shonen17 --> mes excuses... Pour moi une page blanche c'est une page blanche donc sans echo.


                    Et c'est vrai ! Mais j'espère que son énoncé est précis alors ^^

                    AxelleGaudin a écrit:

                    une page blanche avec le code PHP apparaît



                    • Partager sur Facebook
                    • Partager sur Twitter
                      2 mars 2021 à 16:03:36

                      J'ai réunis mon html et mon php, le formulaire fonctionne. Lors de l'envoie je n'ai plus de page blanche, je retourne à ma page initiale et le message "Votre message nous est bien parvenu!" apparaît.

                      Shonen17, je travaille avec MAMP pour tester mon site. Puis-je envoyer un mail avec MAMP ? Plus tard, je vais mettre mon site sur le serveur Nuxit.



                      -
                      Edité par AxelleGo 3 mars 2021 à 8:45:28

                      • Partager sur Facebook
                      • Partager sur Twitter
                        3 mars 2021 à 11:22:01

                        Pour cela il te faut installer un serveur mail en local, j'utilise personnellement maildev.

                        https://github.com/maildev/maildev

                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 mars 2021 à 16:45:32

                          Bonjour,

                          grâce à vos différentes aides mon formulaire fonctionne et je vous en remercie. Cependant juste après l'envoie du formulaire, des messages d'erreurs apparaissent avec le message de bonne réception. Ils me signalent que " get_magic-quotes_gpc " est obsolète.

                          if (1 === get_magic_quotes_gpc())

                          Pourriez-vous me dire ce que je dois mettre à la place ? Je fonctionne avec PHP 7.4.12.

                          De plus, j'aimerai que lorsqu'on appuie sur le bouton envoyer, on soit dirigé vers une nouvelle page, pas celle du formulaire. Cette redirection ne doit être possible qu'à condition que le formulaire soit bien remplie et envoyé. A quel endroit de mon php dois-je indiquer cette action ?

                          <?php
                          
                          $email_expediteur = 'contact@site.com';
                          $nom_expediteur = 'Contact Site.com';
                          $destinataire = 'contact@site.fr';
                          $copie = 'oui';
                          $form_action = '';
                          $message_envoye = "Votre message nous est bien parvenu !";
                          $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
                          $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
                          
                          function Rec($text)
                          {
                              $text = htmlspecialchars(trim($text), ENT_QUOTES);
                              if (1 === get_magic_quotes_gpc())
                              {
                                  $text = stripslashes($text);
                              }
                           
                              $text = nl2br($text);
                              return $text;
                          };
                          
                          function IsEmail($email)
                          {
                              $value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
                              return (($value === 0) || ($value === false)) ? false : true;
                          }
                           
                          $statut   = (isset($_POST['statut']))   ? Rec($_POST['statut'])   : '';
                          $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
                          $adresse     = (isset($_POST['adresse']))     ? Rec($_POST['adresse'])     : '';
                          $codepostal    = (isset($_POST['codepostal']))     ? Rec($_POST['codepostal'])     : '';
                          $ville     = (isset($_POST['ville']))     ? Rec($_POST['ville'])     : '';
                          $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
                          $tel   = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
                          
                          $email = (IsEmail($email)) ? $email : ''; 
                          $err_formulaire = false;  
                          if (isset($_POST['envoi']))
                          {
                              if (($statut != '') && ($nom != '') && ($adresse != '') && ($codepostal != '') && ($ville != '') && ($email != '') && ($tel != ''))
                              {
                                  $headers  = 'MIME-Version: 1.0' . "\r\n";
                                  $headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
                                          'Reply-To:'.$email. "\r\n" .
                                          'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                                          'Content-Disposition: inline'. "\r\n" .
                                          'Content-Transfer-Encoding: 7bit'." \r\n" .
                                          'X-Mailer:PHP/'.phpversion();
                           
                                  if ($copie == 'oui')
                                  {
                                      $cible = $destinataire.';'.$email;
                                  }
                                  else
                                  {
                                      $cible = $destinataire;
                                  };
                           
                                  $caracteres_speciaux     = array('&#039;', '&#8217;', '&quot;', '<br>', '<br />', '&lt;', '&gt;', '&amp;', '…',   '&rsquo;', '&lsquo;');
                                  $caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...', '>>',      '<<'     );
                           
                                  $statut = html_entity_decode($statut);
                                  $statut = str_replace($caracteres_speciaux, $caracteres_remplacement, $statut);
                           
                                  $ville = html_entity_decode($ville);
                                  $ville = str_replace($caracteres_speciaux, $caracteres_remplacement, $ville);
                           
                                  $cible = str_replace(',', ';', $cible);
                                  $num_emails = 0;
                                  $tmp = explode(';', $cible);
                                  foreach($tmp as $email_destinataire)
                                  {
                                      if (mail($email_destinataire, $statut, $headers))
                                          $num_emails++;
                                  }
                           
                                  if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
                                  {
                                      echo '<p>'.$message_envoye.'</p>';
                                  }
                                  else
                                  {
                                      echo '<p>'.$message_non_envoye.'</p>';
                                  };
                              }
                              else
                              {
                                  echo '<p>'.$message_formulaire_invalide.'</p>';
                                  $err_formulaire = true;
                              };
                          };  
                          if (($err_formulaire) || (!isset($_POST['envoi'])))
                          {
                               echo '
                              <form id="contact" method="post" action="'.$form_action.'" >
                                  <div class="statut" ><label for="statut">Statut (Particulier / Professionnel) </label><input type="text" id="statut" name="statut" value="'.stripslashes($statut).'" /></div>
                                  <div class="nom" ><label for="nom">Nom / Nom Entreprise </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" /></div>
                                  <div class="adresse" ><label for="adresse">Adresse </label><input type="text" id="adresse" name="adresse" value="'.stripslashes($adresse).'" /></div>
                                  <div class="codepostal" ><label for="codepostal">Code Postal </label><input type="text" id="codepostal" name="codepostal" value="'.stripslashes($codepostal).'" /></div>
                                  <div class="ville" ><label for="ville">Ville </label><input type="text" id="ville" name="ville" value="'.stripslashes($ville).'" /></div>
                                  <div class="email" ><label for="email">Email </label><input type="text" id="email" name="email" value="'.stripslashes($email).'" /></div>
                                  <div class="tel" ><label for="tel">Téléphone </label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" /></div>
                                  <div class="bouton" ><input type="submit" id="envoi" name="envoi" value="Envoyer" /></div>
                              </form>';
                          };
                          ?>
                          



                          • Partager sur Facebook
                          • Partager sur Twitter
                            5 mars 2021 à 11:10:05

                            if (1 === get_magic_quotes_gpc())

                            Juste ne l'utilise pas, passe directement par nl2br et oublie le stripslashes.

                            Pour rediriger vers une autre page, il faut le spécifier dans l'action

                            <form id="contact" method="post" action="monautrefichier.php" >

                            Si tu souhaites avant la redirection, vérifier que tout est OK, il faut faire une vérification javascript, c'est autre chose.

                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 mars 2021 à 9:41:14

                              Bonjour, je reviens vers vous suite à la mise en ligne de mon site internet.

                              Alors mon formulaire ne s'envoie pas sur ma boîte mail et je n'arrive pas à savoir pourquoi, pouvez-vous m'aider s'il vous plaît ?

                               <?php
                              
                              /*
                              	********************************************************************************************
                              	CONFIGURATION
                              	********************************************************************************************
                              */
                              // expéditeur du dormulaire. Pour des raisons de sécurité, de plus en plus d'hébergeurs imposent que ce soit une adresse sur votre hébergement/nom de domaine.
                              // Par exemple si vous mettez ce script sur votre site "test-site.com", mettez votre email @test-site.com comme expéditeur (par exemple contact@test-site.com)
                              // Si vous ne changez pas cette variable, vous risquez de ne pas recevoir de formulaire.
                              $email_expediteur = 'contact@moi.com';
                              $nom_expediteur = 'Contact MOI.com';
                               
                              //destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par un point-virgule
                              $destinataire = 'site@moi.fr';
                               
                              // copie ? (envoie une copie au visiteur)
                              $copie = 'oui';
                               
                              // Action du formulaire (si votre page a des paramètres dans l'URL)
                              // si cette page est index.php?page=contact alors mettez index.php?page=contact
                              // sinon, laissez vide
                              $form_action = '';
                               
                              // Messages de confirmation du mail
                              $message_envoye = "Votre message nous est bien parvenu !";
                              $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
                               
                              // Message d'erreur du formulaire
                              $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
                               
                              /*
                              	********************************************************************************************
                              	FIN DE LA CONFIGURATION
                              	********************************************************************************************
                              */
                               
                              /*
                               * cette fonction sert à nettoyer et enregistrer un texte
                               */
                              function Rec($text)
                              {
                              	$text = nl2br(trim($text), ENT_QUOTES);
                              
                              	$text = nl2br($text);
                              	return $text;
                              };
                               
                              /*
                               * Cette fonction sert à vérifier la syntaxe d'un email
                               */
                              function IsEmail($email)
                              {
                              	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
                              	return (($value === 0) || ($value === false)) ? false : true;
                              }
                               
                              // formulaire envoyé, on récupère tous les champs.
                              $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
                              $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
                              $tel   = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
                              $statut   = (isset($_POST['statut']))   ? Rec($_POST['statut'])   : '';
                              $objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
                              $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
                               
                              // On va vérifier les variables et l'email ...
                              $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
                              $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
                               
                              if (isset($_POST['envoi']))
                              {
                              	if (($nom != '') && ($email != '') && ($tel != '') && ($statut != '') && ($objet != '') && ($message != ''))
                              	{
                              		$headers  = 'MIME-Version: 1.0' . "\r\n";
                              		$headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
                              				'Reply-To:'.$email. "\r\n" .
                              				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                              				'Content-Disposition: inline'. "\r\n" .
                              				'Content-Transfer-Encoding: 7bit'." \r\n" .
                              				'X-Mailer:PHP/'.phpversion();
                               
                              		// envoyer une copie au visiteur ?
                              		if ($copie == 'oui')
                              		{
                              			$cible = $destinataire.';'.$email;
                              		}
                              		else
                              		{
                              			$cible = $destinataire;
                              		};
                               
                              		// Remplacement de certains caractères spéciaux
                              		$caracteres_speciaux     = array('&#039;', '&#8217;', '&quot;', '<br>', '<br />', '&lt;', '&gt;', '&amp;', '…',   '&rsquo;', '&lsquo;');
                              		$caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...', '>>',      '<<'     );
                               
                              		$statut = html_entity_decode($statut);
                              		$statut = str_replace($caracteres_speciaux, $caracteres_remplacement, $statut);
                               
                              		$message = html_entity_decode($message);
                              		$message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);
                               
                              		// Envoi du mail
                              		$cible = str_replace(',', ';', $cible); // antibug : j'ai vu plein de forums où ce script était mis, les gens ne font pas attention à ce détail parfois
                              		$num_emails = 0;
                              		$tmp = explode(';', $cible);
                              		foreach($tmp as $email_destinataire)
                              		{
                              			if (mail($email_destinataire, $objet, $message, $headers))
                              				$num_emails++;
                              		}
                               
                              		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
                              		{
                              			echo '<p>'.$message_envoye.'</p>';
                              		}
                              		else
                              		{
                              			echo '<p>'.$message_non_envoye.'</p>';
                              		};
                              	}
                              	else
                              	{
                              		// une des 3 variables (ou plus) est vide ...
                              		echo '<p>'.$message_formulaire_invalide.'</p>';
                              		$err_formulaire = true;
                              	};
                              }; // fin du if (!isset($_POST['envoi']))
                               
                              if (($err_formulaire) || (!isset($_POST['envoi'])))
                              {
                              	// afficher le formulaire
                              	echo '
                              	<form id="contact" method="post" action="'.$form_action.'" >
                              		<div class="nom" ><label for="nom">Nom </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" required /></div>
                                      <div class="email" ><label for="email">Email </label><input type="email" id="email" name="email" value="'.stripslashes($email).'" required /></div>
                                      <div class="tel" ><label for="tel">Téléphone </label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" required minlength="10" maxlenght="10"/></div>
                                      <div class="statut" ><label for="statut">Statut (Particulier / Professionnel) </label><input type="text" id="statut" name="statut" value="'.stripslashes($statut).'" required pattern="[Pp]articulier|[Pp]rofessionnel" /></div>
                                      <div class="objet" ><label for="objet">Objet</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" required/></div>
                              		<div class="msg" ><label for="message">Message :</label><textarea id="message" name="message" cols="30" rows="8">'.stripslashes($message).'</textarea></div>
                              	    <div class="bouton" ><input type="submit" id="envoi" name="envoi" value="Envoyer le message" /></div>
                              	</form>';
                              };
                              ?>

                              De plus, mon site ne fonctionne pas correctement avec Safari, la mise en page est modifiée, un diaporama ne fonctionne pas, ... Pouvez-vous me dire comment y remédier?

                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 mars 2021 à 12:24:44

                                Bonjour,

                                suite à mon dernier message j'ai pu résoudre une partie de mes problèmes mais d'autres son apparus. 

                                J'arrive à recevoir sur ma boîte mail mon premier formulaire de ma page "contact" mais dans le mail reçu toutes les informations du formulaire n'apparaisse pas. Je ne reçois que l'objet et le message.

                                <?php
                                
                                /*
                                	********************************************************************************************
                                	CONFIGURATION
                                	********************************************************************************************
                                */
                                // expéditeur du dormulaire. Pour des raisons de sécurité, de plus en plus d'hébergeurs imposent que ce soit une adresse sur votre hébergement/nom de domaine.
                                // Par exemple si vous mettez ce script sur votre site "test-site.com", mettez votre email @test-site.com comme expéditeur (par exemple contact@test-site.com)
                                // Si vous ne changez pas cette variable, vous risquez de ne pas recevoir de formulaire.
                                $email_expediteur = 'contact@moi.com';
                                $nom_expediteur = 'Contact MOI.com';
                                 
                                //destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par un point-virgule
                                $destinataire = 'site@moi.fr';
                                 
                                // copie ? (envoie une copie au visiteur)
                                $copie = 'oui';
                                 
                                // Action du formulaire (si votre page a des paramètres dans l'URL)
                                // si cette page est index.php?page=contact alors mettez index.php?page=contact
                                // sinon, laissez vide
                                $form_action = '';
                                 
                                // Messages de confirmation du mail
                                $message_envoye = "Votre message nous est bien parvenu !";
                                $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
                                 
                                // Message d'erreur du formulaire
                                $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
                                 
                                /*
                                	********************************************************************************************
                                	FIN DE LA CONFIGURATION
                                	********************************************************************************************
                                */
                                 
                                /*
                                 * cette fonction sert à nettoyer et enregistrer un texte
                                 */
                                function Rec($text)
                                {
                                	$text = htmlspecialchars(($text), ENT_QUOTES);
                                
                                	$text = htmlspecialchars($text);
                                	return $text;
                                };
                                 
                                /*
                                 * Cette fonction sert à vérifier la syntaxe d'un email
                                 */
                                function IsEmail($email)
                                {
                                	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
                                	return (($value === 0) || ($value === false)) ? false : true;
                                }
                                 
                                // formulaire envoyé, on récupère tous les champs.
                                $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
                                $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
                                $tel   = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
                                $statut   = (isset($_POST['statut']))   ? Rec($_POST['statut'])   : '';
                                $objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
                                $message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
                                 
                                // On va vérifier les variables et l'email ...
                                $email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
                                $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
                                 
                                if (isset($_POST['envoi']))
                                {
                                	if (($nom != '') && ($email != '') && ($tel != '') && ($statut != '') && ($objet != '') && ($message != ''))
                                	{
                                		$headers  = 'MIME-Version: 1.0' . "\r\n";
                                		$headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
                                				'Reply-To:'.$email. "\r\n" .
                                				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                                				'Content-Disposition: inline'. "\r\n" .
                                				'Content-Transfer-Encoding: 7bit'." \r\n" .
                                				'X-Mailer:PHP/'.phpversion();
                                 
                                		// envoyer une copie au visiteur ?
                                		if ($copie == 'oui')
                                		{
                                			$cible = $destinataire.';'.$email;
                                		}
                                		else
                                		{
                                			$cible = $destinataire;
                                		};
                                 
                                		// Remplacement de certains caractères spéciaux
                                		$caracteres_speciaux     = array('&#039;', '&#8217;', '&quot;', '<br>', '<br />', '&lt;', '&gt;', '&amp;', '…',   '&rsquo;', '&lsquo;');
                                		$caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...', '>>',      '<<'     );
                                 
                                		$statut = html_entity_decode($statut);
                                		$statut = str_replace($caracteres_speciaux, $caracteres_remplacement, $statut);
                                 
                                		$message = html_entity_decode($message);
                                		$message = str_replace($caracteres_speciaux, $caracteres_remplacement, $message);
                                 
                                		// Envoi du mail
                                		$cible = str_replace(',', ';', $cible); // antibug : j'ai vu plein de forums où ce script était mis, les gens ne font pas attention à ce détail parfois
                                		$num_emails = 0;
                                		$tmp = explode(';', $cible);
                                		foreach($tmp as $email_destinataire)
                                		{
                                			if (mail($email_destinataire, $objet, $message, $headers))
                                				$num_emails++;
                                		}
                                 
                                		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
                                		{
                                			echo '<p>'.$message_envoye.'</p>';
                                		}
                                		else
                                		{
                                			echo '<p>'.$message_non_envoye.'</p>';
                                		};
                                	}
                                	else
                                	{
                                		// une des 3 variables (ou plus) est vide ...
                                		echo '<p>'.$message_formulaire_invalide.'</p>';
                                		$err_formulaire = true;
                                	};
                                }; // fin du if (!isset($_POST['envoi']))
                                 
                                if (($err_formulaire) || (!isset($_POST['envoi'])))
                                {
                                	// afficher le formulaire
                                	echo '
                                    <form id="contact" method="post" action="'.$form_action.'" >
                                		<div class="nom" ><label for="nom">Nom </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" required /></div>
                                        <div class="email" ><label for="email">Email </label><input type="email" id="email" name="email" value="'.stripslashes($email).'" required /></div>
                                        <div class="tel" ><label for="tel">Téléphone </label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" required minlength="10" maxlenght="10"/></div>
                                        <div class="statut" ><label for="statut">Statut (Particulier / Professionnel) </label><input type="text" id="statut" name="statut" value="'.stripslashes($statut).'" required pattern="[Pp]articulier|[Pp]rofessionnel" /></div>
                                        <div class="objet" ><label for="objet">Objet</label><input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" required/></div>
                                		<div class="msg" ><label for="message">Message :</label><textarea id="message" name="message" cols="30" rows="8">'.stripslashes($message).'</textarea></div>
                                	    <div class="bouton" ><input type="submit" id="envoi" name="envoi" value="Envoyer le message" /></div>
                                	</form>';
                                };
                                ?>

                                Pour mon second formulaire, je ne le reçois pas sur ma boîte mail. J'arrive à recevoir mon formulaire si je lui enlève l'action de redirection lors de l'envoie du formulaire (si j'enlève le $form_action).

                                $form_action = 'fichestechniques.html';

                                Or je voudrais pouvoir recevoir le formulaire sur ma boîte mail et avoir la redirection vers mon autre page. Pouvez-vous m'aider s'il vous plaît ?

                                Je vous mets mon code complet de mon autre formulaire -.

                                <?php
                                
                                $email_expediteur = 'Demdandedefichier@moi.com';
                                $nom_expediteur = 'Demandedefichier Moi.com';
                                $destinataire = 'site@moi.fr';
                                $copie = 'oui';
                                $form_action = 'fichestechniques.html';
                                $message_envoye = "Votre message nous est bien parvenu !";
                                $message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
                                $message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
                                 
                                function Rec($text)
                                {
                                	$text = htmlspecialchars(trim($text), ENT_QUOTES);
                                
                                	$text = htmlspecialchars($text);
                                	return $text;
                                };
                                
                                function IsEmail($email)
                                {
                                	$value = preg_match('/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!\.)){0,61}[a-zA-Z0-9_-]?\.)+[a-zA-Z0-9_](?:[a-zA-Z0-9_\-](?!$)){0,61}[a-zA-Z0-9_]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/', $email);
                                	return (($value === 0) || ($value === false)) ? false : true;
                                }
                                 
                                $statut   = (isset($_POST['statut']))   ? Rec($_POST['statut'])   : '';
                                $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
                                $adresse     = (isset($_POST['adresse']))     ? Rec($_POST['adresse'])     : '';
                                $codepostal    = (isset($_POST['codepostal']))     ? Rec($_POST['codepostal'])     : '';
                                $ville     = (isset($_POST['ville']))     ? Rec($_POST['ville'])     : '';
                                $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
                                $tel   = (isset($_POST['tel']))   ? Rec($_POST['tel'])   : '';
                                
                                
                                $email = (IsEmail($email)) ? $email : ''; 
                                $err_formulaire = false;
                                 
                                if (isset($_POST['envoi']))
                                {
                                	if (($statut != '') && ($nom != '') && ($adresse != '') && ($codepostal != '') && ($ville != '') && ($email != '') && ($tel != ''))
                                	{
                                		$headers  = 'MIME-Version: 1.0' . "\r\n";
                                		$headers .= 'From:'.$nom_expediteur.' <'.$email_expediteur.'>' . "\r\n" .
                                				'Reply-To:'.$email. "\r\n" .
                                				'Content-Type: text/plain; charset="utf-8"; DelSp="Yes"; format=flowed '."\r\n" .
                                				'Content-Disposition: inline'. "\r\n" .
                                				'Content-Transfer-Encoding: 7bit'." \r\n" .
                                				'X-Mailer:PHP/'.phpversion();
                                 
                                		if ($copie == 'oui')
                                		{
                                			$cible = $destinataire.';'.$email;
                                		}
                                		else
                                		{
                                			$cible = $destinataire;
                                		};
                                 
                                		$caracteres_speciaux     = array('&#039;', '&#8217;', '&quot;', '<br>', '<br />', '&lt;', '&gt;', '&amp;', '…',   '&rsquo;', '&lsquo;');
                                		$caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...', '>>',      '<<'     );
                                 
                                		$statut = html_entity_decode($statut);
                                		$statut = str_replace($caracteres_speciaux, $caracteres_remplacement, $statut);
                                 
                                		$ville = html_entity_decode($ville);
                                		$ville = str_replace($caracteres_speciaux, $caracteres_remplacement, $ville);
                                 
                                		$cible = str_replace(',', ';', $cible);
                                		$num_emails = 0;
                                		$tmp = explode(';', $cible);
                                		foreach($tmp as $email_destinataire)
                                		{
                                			if (mail($email_destinataire, $statut, $headers))
                                				$num_emails++;
                                		}
                                 
                                		if ((($copie == 'oui') && ($num_emails == 2)) || (($copie == 'non') && ($num_emails == 1)))
                                		{
                                			echo '<p>'.$message_envoye.'</p>';
                                		}
                                		else
                                		{
                                			echo '<p>'.$message_non_envoye.'</p>';
                                		};
                                	}
                                	else
                                	{
                                		echo '<p>'.$message_formulaire_invalide.'</p>';
                                		$err_formulaire = true;
                                	};
                                };
                                
                                if (($err_formulaire) || (!isset($_POST['envoi'])))
                                {
                                	echo '
                                    <form id="contact" method="post" action="'.$form_action.'" >
                                        <div class="statut" ><label for="statut">Statut (Particulier / Professionnel) </label><input type="text" id="statut" name="statut" value="'.stripslashes($statut).'" required pattern="[Pp]articulier|[Pp]rofessionnel"/></div>
                                        <div class="nom" ><label for="nom">Nom / Nom Entreprise </label><input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" required/></div>
                                        <div class="adresse" ><label for="adresse">Adresse </label><input type="text" id="adresse" name="adresse" value="'.stripslashes($adresse).'" required /></div>
                                        <div class="codepostal" ><label for="codepostal">Code Postal </label><input type="text" id="codepostal" name="codepostal" value="'.stripslashes($codepostal).'" required minlength="5" maxlenght="5" /></div>
                                        <div class="ville" ><label for="ville">Ville </label><input type="text" id="ville" name="ville" value="'.stripslashes($ville).'" required/></div>
                                        <div class="email" ><label for="email">Email </label><input type="email" id="email" name="email" value="'.stripslashes($email).'" required/></div>
                                        <div class="tel" ><label for="tel">Téléphone </label><input type="text" id="tel" name="tel" value="'.stripslashes($tel).'" required minlength="10" maxlenght="10"/></div>
                                	    <div class="bouton" ><input type="submit" id="envoi" name="envoi" value="Envoyer" /></div>
                                	</form>';
                                };
                                ?>





                                • Partager sur Facebook
                                • Partager sur Twitter
                                  13 mars 2021 à 12:31:03

                                  Bonjour,

                                  A moins de mon tromper mais tu n'envoies que $message dans ton mail.

                                  Il faudrait "construire" mail avec toute les infos

                                  Pour le second si ton action est une page "html", il ne pourras pas faire de traitement php

                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    17 mars 2021 à 10:53:02

                                    Bonjour,

                                    il y a t-il un autre moyen pour que lors de l'appuie sur le bouton "envoyer" mon formulaire s'envoie sur ma boîte mail et en même qu'il dirige le visiteur vers une autre page html ?

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      17 mars 2021 à 11:40:09

                                      Ca dépend de quel "autre" moyen, quel est le moyen que tu connais ?

                                      Regarde tout de même la valeur de "action" de ta balise <form>

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        17 mars 2021 à 14:20:01

                                        Je ne connais que le html et le php.

                                        <form id="contact" method="post" action="'.$form_action.'" >
                                        $form_action = 'fichestechniques.html';


                                        Si j'enlève le $form_action je reçois mon formulaire sur ma boîte mail mais je ne suis pas redirigée vers ma page html. Et si j'applique ma page html au $form_action, je ne reçois pas le formulaire, par contre j'accède à la page html. Or j'aimerai que les deux actions soient possible en même temps.

                                        Est-ce possible ?

                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          18 mars 2021 à 9:12:33

                                          Tu n'as qu'à transformer 'fichestechniques.html' en 'fichestechniques.php' et insérer le code de l'envoi du mail dedans.

                                          Ainsi, tu redirige vers fiches technique ET tu envoies l'e-mail.

                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Envoi de données via un formulaire de contact

                                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                          • Editeur
                                          • Markdown