Partage
  • Partager sur Facebook
  • Partager sur Twitter

Formulaire de contact

Sujet résolu
    22 mai 2018 à 23:44:57

    Bonsoir,

    Je viens de finir de créer mon site web mais un truc me titille dans mon formulaire de contact, quand le visiteur a fini d'écrire son mail et qu'il clique sur "envoyer", le site redirige le visiteur sur la page "mailer.php" pour afficher le texte "Merci ! Votre message a été envoyé." sur une page blanche.

    Sachant que je suis débutant en ".php" je me suis aidé d'un code trouvé sur le net qui pour dire fonctionne parfaitement mais au niveau affichage après l'envoi je suis pas fan..

    Ma question est donc la suivante: Est-il possible de rediriger automatiquement après quelques secondes le visiteur de nouveau sur la page "contact.html" sans qu'il n'ai besoin de faire un retour en arrière ? Ou alors est-il possible que le message "Merci ! [...]" s'affiche sur la page html ?

    Si oui, comment ?

    Pour mieux comprendre, je vous invite à regarder le site et de vous donner le code ".html" du formulaire + le code ".php"

    PHP

    <?php
        // My modifications to mailer script from:
        // http://blog.teamtreehouse.com/create-ajax-contact-form
        // Added input sanitizing to prevent injection
    
        // Only process POST reqeusts.
        if ($_SERVER["REQUEST_METHOD"] == "POST") {
            // Get the form fields and remove whitespace.
            $name = strip_tags(trim($_POST["name"]));
    				$name = str_replace(array("\r","\n"),array(" "," "),$name);
            $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
            $message = trim($_POST["message"]);
    
            // Check that data was sent to the mailer.
            if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                // Set a 400 (bad request) response code and exit.
                http_response_code(400);
                echo "Oops! Il y a eu un problème avec votre message. Veuillez compléter le formulaire et réessayer.";
                exit;
            }
    
            // Set the recipient email address.
            // FIXME: Update this to your desired email address.
            $recipient = "contact@mbriquet.com";
    
            // Set the email subject.
            $subject = "Message en provenance du site ! (De $name)";
    
            // Build the email content.
            $email_content = "Nom: $name\n";
            $email_content .= "Email: $email\n\n";
            $email_content .= "Message:\n$message\n";
    
            // Build the email headers.
            $email_headers = "From: $name <$email>";
    
            // Send the email.
            if (mail($recipient, $subject, $email_content, $email_headers)) {
                // Set a 200 (okay) response code.
                http_response_code(200);
                echo "Merci ! Votre message a été envoyé.";
            } else {
                // Set a 500 (internal server error) response code.
                http_response_code(500);
                echo "Oops! Quelque chose s'est mal passé et nous n'avons pas pu envoyer votre message.";
            }
    
        } else {
            // Not a POST request, set a 403 (forbidden) response code.
            http_response_code(403);
            echo "Un problème est survenu lors de l'envoi. Veuillez réessayer..";
        }
    
    ?>


    HTML

    <form id="ajax-contact" method="post" action="mailer.php">
                      <div class="row">
                        <div class="col-md-7">
                          <div class="form-group">
                            <input type="text" class="form-control" id="name" name="name" placeholder="Nom" required>
                          </div>
                          <div class="form-group">
                            <input type="email" class="form-control" id="email" name="email" placeholder="Email" required>
                          </div>
                          <div class="form-group">
                            <textarea class="form-control" id="message" name="message" placeholder="Entrez votre message" rows="5" required></textarea>
                          </div>
                          <button type="submit" class="btn btn-default btn-lg">Envoyer</button>
                          </div>
                        <div class="col-md-5 address-container">
                          <ul class="list-unstyled">
                            <li>
                              <span class="fa-icon">
                                <i class="fa fa-phone" aria-hidden="true"></i>
                              </span>
                              + 33 7 60 48 12 28
                            </li>
                            <li>
                              <span class="fa-icon">
                                <i class="fa fa-at" aria-hidden="true"></i>
                              </span>
                              contact@mbriquet.com
                            </li>
                            <li>
                              <span class="fa-icon">
                                <i class="fa fa fa-map-marker" aria-hidden="true"></i>
                              </span>
                              30 rue d'Alger 51100 Reims
                            </li>
                          </ul>
                          <h3>Suivez-moi sur les réseaux !</h3>
                          <a href="" title="" class="fa-icon">
                            <i class="fa fa-facebook"></i>
                          </a>
                          <a href="https://www.instagram.com/m.briquet/?hl=fr" title="" class="fa-icon">
                            <i class="fa fa-instagram"></i>
                          </a>
                          <a href="https://www.linkedin.com/in/maxence-briquet-13b37914b/" title="" class="fa-icon">
                            <i class="fa fa-linkedin"></i>
                          </a>
    
                        </div>
                      </div>
                    </form>




    -
    Edité par mbriquet.com 22 mai 2018 à 23:49:20

    • Partager sur Facebook
    • Partager sur Twitter
      23 mai 2018 à 10:45:34

      Bonjour,

      Il te suffit de remplacer le echo par header('Location: ton chemin') pour rediriger l'utilisateur.

      Si tu veux afficher un message de succès ou d'erreur, avant ta redirection, tu stockes en session le message de succès en cas de succès et un message d'erreur en cas d'échec.

      Ensuite, sur ta page, tu vérifies si la session existe et a bien un contenu. Si c'est le cas, tu affiches le contenu de la session. Je te conseille de regarder les messages flashs pour faire ceci.

      • Partager sur Facebook
      • Partager sur Twitter
      "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
        23 mai 2018 à 20:24:31

        Super merci de ton aide ! Je pense que je vais opter pour une redirection basique pour le moment et je me pencherais sur les messages flash un peu plus tard. Et pour ce qui est du temps de redirection je doit le spécifier ou c'est déjà prédéfini ?

        -
        Edité par mbriquet.com 23 mai 2018 à 20:25:32

        • Partager sur Facebook
        • Partager sur Twitter
          23 mai 2018 à 20:52:54

          Pourquoi veux-tu mettre un temps de redirection?

          La redirection met le temps qu'elle doit mettre pour rediriger.

          • Partager sur Facebook
          • Partager sur Twitter
          "Ils ne savaient pas que c'était impossible, alors ils l'ont fait" Mark Twain
            24 mai 2018 à 1:35:54

            eclairia a écrit:

            Pourquoi veux-tu mettre un temps de redirection?

            La redirection met le temps qu'elle doit mettre pour rediriger.

            Oui oublie ma question était débile haha

            Pourquoi ça ne fonctionne pas ? Regarde :

            <?php
                // My modifications to mailer script from:
                // http://blog.teamtreehouse.com/create-ajax-contact-form
                // Added input sanitizing to prevent injection
            
                // Only process POST reqeusts.
                if ($_SERVER["REQUEST_METHOD"] == "POST") {
                    // Get the form fields and remove whitespace.
                    $name = strip_tags(trim($_POST["name"]));
            				$name = str_replace(array("\r","\n"),array(" "," "),$name);
                    $email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
                    $message = trim($_POST["message"]);
            
                    // Check that data was sent to the mailer.
                    if ( empty($name) OR empty($message) OR !filter_var($email, FILTER_VALIDATE_EMAIL)) {
                        // Set a 400 (bad request) response code and exit.
                        http_response_code(400);
                        header('Location: contact.html') "Oops! Il y a eu un problème avec votre message. Veuillez compléter le formulaire et réessayer.";
                        exit;
                    }
            
                    // Set the recipient email address.
                    // FIXME: Update this to your desired email address.
                    $recipient = "contact@mbriquet.com";
            
                    // Set the email subject.
                    $subject = "Message en provenance du site ! (De $name)";
            
                    // Build the email content.
                    $email_content = "Nom: $name\n";
                    $email_content .= "Email: $email\n\n";
                    $email_content .= "Message:\n$message\n";
            
                    // Build the email headers.
                    $email_headers = "From: $name <$email>";
            
                    // Send the email.
                    if (mail($recipient, $subject, $email_content, $email_headers)) {
                        // Set a 200 (okay) response code.
                        http_response_code(200);
                        header('Location: contact.html') "Merci ! Votre message a été envoyé.";
                    } else {
                        // Set a 500 (internal server error) response code.
                        http_response_code(500);
                        header('Location: contact.html') "Oops! Quelque chose s'est mal passé et nous n'avons pas pu envoyer votre message.";
                    }
            
                } else {
                    // Not a POST request, set a 403 (forbidden) response code.
                    http_response_code(403);
                    header('Location: contact.html') "Un problème est survenu lors de l'envoi. Veuillez réessayer..";
                }
            
            ?>





            -
            Edité par mbriquet.com 24 mai 2018 à 2:55:26

            • Partager sur Facebook
            • Partager sur Twitter
              24 mai 2018 à 11:58:09

              Hey;

              C'est quoi ces "Blabla" après tes header ? retire les c':

              • Partager sur Facebook
              • Partager sur Twitter

              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