Partage
  • Partager sur Facebook
  • Partager sur Twitter

Adaptation validation formulaire de contact

    12 mai 2022 à 12:28:40

    Bonjour,

    J'ai adapter un template bootstrap pour mon site internet avec un formulaire de contact fonctionnant avec PHPMailer.
    Je me heurte à un problème de validation.

    En effet, ma page HTML valide mon formulaire de contact avec un fichier validate.js (créé par bootstrap).
    Celui-ci est en charge de me renvoyer sur la page HTML, un encadré; vert : message ok, rouge; erreur.

    Là ce qu'il se passe est que la page me renvoi le message d'envoi mais en me signifiant dans l'encadré rouge Error : suivit du message d'envoi.

    Je confirme que le mail est bien envoyé et réceptionné.

    Je souhaiterais adapter mon fichier php afin qu'il puisse renvoyé une valeur (OK) pour valider l'exception du fichier Javascript.
    Je ne sais pas comment m'y prendre exactement.

    Fichier .js :

    (function () {
      "use strict";
    
      let forms = document.querySelectorAll('.php-email-form');
    
      forms.forEach( function(e) {
        e.addEventListener('submit', function(event) {
          event.preventDefault();
    
          let thisForm = this;
    
          let action = thisForm.getAttribute('action');
          let recaptcha = thisForm.getAttribute('data-g-recaptcha-site-key');
          
          if( ! action ) {
            displayError(thisForm, 'La propriété d action du formulaire n est pas définie !')
            return;
          }
          thisForm.querySelector('.loading').classList.add('d-block');
          thisForm.querySelector('.error-message').classList.remove('d-block');
          thisForm.querySelector('.sent-message').classList.remove('d-block');
    
          let formData = new FormData( thisForm );
    
          if ( recaptcha ) {
            if(typeof grecaptcha !== "undefined" ) {
              grecaptcha.ready(function() {
                try {
                  grecaptcha.execute(recaptcha, {action: 'php_email_form_submit'})
                  .then(token => {
                    formData.set('grecaptcha-response', token);
                    php_email_form_submit(thisForm, action, formData);
                  })
                } catch(error) {
                  displayError(thisForm, error)
                }
              });
            } else {
              displayError(thisForm, 'L url de l API javascript reCaptcha n est pas chargée !')
            }
          } else {
            php_email_form_submit(thisForm, action, formData);
          }
        });
      });
    
      function php_email_form_submit(thisForm, action, formData) {
        fetch(action, {
          method: 'POST',
          body: formData,
          headers: {'X-Requested-With': 'XMLHttpRequest'}
        })
        .then(response => {
          if( response.ok ) {
            return response.text()
          } else {
            throw new Error(`${response.status} ${response.statusText} ${response.url}`); 
          }
        })
        .then(data => {
          thisForm.querySelector('.loading').classList.remove('d-block');
          if (data.trim() == 'OK') {
            thisForm.querySelector('.sent-message').classList.add('d-block');
            thisForm.reset(); 
          } else {
            throw new Error(data ? data : 'La soumission du formulaire a échoué et aucun message d erreur n a été renvoyé par : ' + action); 
          }
        })
        .catch((error) => {
          displayError(thisForm, error);
        });
      }
    
      function displayError(thisForm, error) {
        thisForm.querySelector('.loading').classList.remove('d-block');
        thisForm.querySelector('.error-message').innerHTML = error;
        thisForm.querySelector('.error-message').classList.add('d-block');
      }
    
    })();
    

    Fichier .php

    			$mail->AddReplyTo($_POST['email'], $_POST['name'], $_POST['prenom']);
    		  $mail->AddAddress("contact@mydomain.com");
    		  $mail->IsHTML(true); //
    		  $mail->SMTPDebug = 0;
    		  $mail->recaptcha_secret_key = 'secret_key';
    
    		if(!$mail->send()) {
    		  echo " Erreur lors de l'envoi";
    		} else {
    		  echo "C'est tout bon";
    		}
    		if (!empty($msg)) {
    		echo "<p>$msg</p>";
    		}
    
    		?>




    • Partager sur Facebook
    • Partager sur Twitter

    Adaptation validation 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