5569 sujets

Sémantique web et HTML

Bonjour à tous,

Depuis plusieurs jours j'essaye de faire fonctionner l'envoi d'un formulaire de contact.

Avec des recherches dans ce forum, j'ai trouver un sujet identique au mien. J'ai donc récupéré le code fonctionnel ci-dessous et cela fonctionne bien, je reçois bien un mail avec les données du formulaire :

 <?php
    // ADRESSE DESTINATAIRE
    $to = 'monadresse@XXX.fr';

    // OBJET DU MESSAGE
    $subject = "SUJET DU MAIL";

    //CONTENU DU MESSAGE
    $message = "Nom: ".$_POST["nom"]."<br>"
    ."Message: ".$_POST["message"]."<br>"
    ."nom: ".   $_POST['name']."<br>"
    ."prenom: ".$_POST['prenom']."<br>"
    ."email: ". $_POST['email']."<br>"
    ."adress: ". $_POST['adress']."<br>"
    ."town: ".   $_POST['town']."<br>"
    ."postal: ". $_POST['postal']."<br>"
    ."birthday: ". $_POST['birthday']."<br>"
    ."tel: ".    $_POST['tel']."<br>"
    ."subject: ". $_POST['subject']."<br>";

    //HEADER DE L'EMAIL
    $headers = "From:"."<{$_POST['email']}>
        \r\n" .
        'X-Mailer: PHP/' . phpversion() . "\r\n" .
        "MIME-Version: 1.0\r\n" .
        "Content-Type: text/html; charset=utf-8\r\n" .
        "Content-Transfer-Encoding: 8bit\r\n\r\n";

        // ENVOI
        if(mail($to, $subject, $message, $headers))
        {
        echo '
        <script>alert("Message envoyé ! Redirection au clic sur le OK ");</script>';
        echo '
        <script>document.location.href = "../#";</script>';
        }
        else
        {
        echo '
        <script>alert("Envoie du mail échoué, veuillez réessayer. Redirection au clic sur le OK ");</script>';
        echo '
        <script>document.location.href = "php/contactMail.php";</script>';
        };

        ?>


Le formulaire sur une page HTML :
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8" />
    <title></title>
    <link rel="icon" href="images/favicon.ico" />
    <link rel="stylesheet" type="text/css" href="css/reset.css" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>

<body>
    <section id="contact">
        <form class="form" method="post" action="mail2.php" enctype="multipart/form-data">
            <fieldset>

                <p>
                    <input type="text" name="name" id="name" required=required placeholder="Nom*" autofocus=autofocus />
                </p>
                <p>
                    <input type="text" name="prenom" id="prenom" placeholder="Prénom" />
                </p>
                <p>
                    <input type="email" name="mail" id="mail" placeholder="Email*" required=required />
                </p>
                <p>
                    <input type="text" name="adress" id="adress" placeholder="Adresse" />
                </p>
                <p>
                    <input type="text" name="town" id="town" placeholder="Ville*" required=required />
                </p>
                <p>
                    <input type="text" name="postal" id="postal" placeholder="Code postal*" required=required />
                </p>
                <p>
                    <input type="text" name="birthday" id="birthday" placeholder="Date de Naissance*" required=required />
                </p>
                <p>
                    <input type="tel" name="tel" id="tel" placeholder="Téléphone" />
                </p>
                <!--<legend> Permis* :</legend>-->
                <p id="btn">
                    <label for="subject">Permis</label>
                    <select id="subject" name="subject">
                        <option>B</option>
                        <option>D</option>
                        <option>B+E</option>
                        <option>aucun</option>
                    </select>
                </p>

                <p id="button">

                    <input value="Envoyer " class="button" type="submit" />
                </p>
            </fieldset>
        </form>
    </section>

</body>
</html>



J'ai donc été inspiré et j'ai repris la plupart des éléments pour mon site web :

Mon formulaire HTML :

<form method="post" action="envoi.php" enctype="multipart/form-data">
                            <div class="form-group row">
                                <div class="col-sm-6">
                                    <input type="text" class="form-control" placeholder="Votre nom" name="name" id="name" required>
                                </div>
                                <div class="col-sm-6">
                                    <input type="text" class="form-control" placeholder="Votre prénom" name="prenom" id="prenom" required>
                                </div>
                                <br />
                                <div class="col-sm-6">
                                    <input type="email" class="form-control" placeholder="Votre adresse mail" name="mail" id="mail" required>
                                </div>
                                <div class="col-sm-6">
                                    <input type="text" class="form-control" placeholder="Téléphone" name="tel" id="tel" required>
                                </div>
                                <div class="col-xs-12 col-md-12">
                                    <select style="color:black" value="hide" required name="VOUSETES" id="VOUSETES">
                                        <option style="color:black" value="hide">-- Vous êtes ? --</option>
                                        <option style="color:black"> Demandeur d'emploi</option>
                                        <option style="color:black"> Salarié</option>
                                        <option style="color:black"> Entreprise </option>
                                        <option style="color:black"> Autre...</option>
                                    </select>
                                </div>
                                <div class="col-xs-12 col-md-12">
                                    <select style="color:black" name="SUJET" id="SUJET" onchange="java_script_:show(this.options[this.selectedIndex].value)" required>
                                        <option style="color:black">-- Séléctionner un sujet --</option>
                                        <option style="color:black"> Demande de devis</option>
                                        <option style="color:black" value="Form"> Inscription à une session de formation</option>
                                        <option style="color:black"> Autre...</option>
                                    </select>
                                </div>
                                <div class="col-xs-12 col-md-12" id="hiddenDiv" style="display:inherit">
                                    <select style="color:black" name="TYPEFORM" id="TYPEFORM" required>
                                        <option style="color:black" value="hide">-- Séléctionner le type de formation --</option>
                                        <option style="color:black"> SSIAP (1,2 ou 3)</option>
                                        <option style="color:black"> SST Sauveteur Secouriste du Travail </option>
                                        <option style="color:black"> EPI - Equipier de Première Intervention  </option>
                                        <option style="color:black"> Formation à l'évacuation  </option>
                                        <option style="color:black"> Maniement des extincteurs  </option>
                                        <option style="color:black"> Les travaux par points chauds - Le permis de feu  </option>
                                        <option style="color:black"> Exploitation du Système de Sécurité Incendie  </option>
                                        <option style="color:black"> H0B0 (Habilitation électrique du personnel)  </option>
                                    </select>
                                </div>
                            </div>
                            <div class="form-group row">
                                <div class="col-xs-12 col-md-12">
                                    <textarea type="text" class="form-control" placeholder="Précisez votre demande" rows="6" name="MESSAGE2" id="MESSAGE2" required></textarea>
                                </div>
                            </div>
                            <div class="g-recaptcha"
                                 data-sitekey="XXXXXXXXXXXXXX-clé-captchaXXXXXXXXXXXXXXXXX">

                            </div> <!--CHANGER LA CLÉ-->
                            <br />
                            <button type="submit" class="btn btn-primary px-4" name="Envoyer" value="Envoyer">Envoyer</button>

                        </form>



Et la page avec le code PHP :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <?php
    // ADRESSE DESTINATAIRE
    $to = 'monadresse@XXX.fr';

    // OBJET DU MESSAGE
    $subject = "Demande de contact";

    //CONTENU DU MESSAGE
    $message = "Nom: ".$_POST["nom"]."<br>"
    ."Message: ".$_POST["message"]."<br>"
    ."nom: ".   $_POST['name']."<br>"
    ."prenom: ".$_POST['prenom']."<br>"
    ."email: ". $_POST['email']."<br>"
    ."tel: ".    $_POST['tel']."<br>"
    ."VOUSETES: ". $_POST['VOUSETES']."<br>";
    ."SUJET: ". $_POST['SUJET']."<br>";
    ."TYPEFORM: ". $_POST['TYPEFORM']."<br>";
    ."MESSAGE2: ". $_POST['MESSAGE2']."<br>";

    //HEADER DE L'EMAIL
    $headers = "From:"."<{$_POST['email']}>
        \r\n" .
        'X-Mailer: PHP/' . phpversion() . "\r\n" .
        "MIME-Version: 1.0\r\n" .
        "Content-Type: text/html; charset=utf-8\r\n" .
        "Content-Transfer-Encoding: 8bit\r\n\r\n";

        // ENVOI
        if(mail($to, $subject, $message, $headers))
        {
        echo '
        <script>alert("Message envoyé ! Redirection au clic sur le OK ");</script>';
        echo '
        <script>document.location.href = "../#";</script>';
        }
        else
        {
        echo '
        <script>alert("Envoie du mail échoué, veuillez réessayer. Redirection au clic sur le OK ");</script>';
        echo '
        <script>document.location.href = "../#";</script>';
        };

        ?>
</body>
</html>



Grâce à l'intervention de plusieurs personnes pour le 1er formulaire tout fonctionne, mais Mon formulaire ne fonctionne pas, je ne reçois pas de mail

Pourriez-vous m'apportez de vos lumières ?

En vous remerciant Smiley smile
Modifié par nAAb (02 Feb 2019 - 17:37)
Salut

Pas de message d'erreur ?

on juste le droit à "Je reçois pas le mail " ?

Si tu rajoutes
error_reporting(E_ALL);
ini_set('display_errors', 1)
;

Y'a t-il un message d'erreur ?
Bonjour JENCAL,

Quand je clique sur le bouton submit, je suis redirigé directement sur la page "envoi.php" avec un ecran blanc et vide. Smiley decu

Rien dans la console du navigateur. Rien dans la boite mail (spam inclus)
______________

Bonjour mina8000,

Je te remercie pour ton aide et ton temps, je fais preuve de patiente. Smiley ravi

Cordialement.
Re Bonjour,

Je suis toujours bloqué sur ce formulaire. Une âme charitable Smiley help

Merci pour vos retours
Bonjour,

Ca sent l'erreur 500 à plein nez...

Je trouve étrange de déclarer le doctype avant le traitement en php. Je ne sais pas si ça a une incidence d'envoyer du contenu avant de faire le traitement car je n'ai jamais procédé ainsi. Néanmoins il est de bonne pratique que d'effectuer les traitements serveur avant d'envoyer quoi que ce soit.

Ensuite je vois que vous tentez de récupérer des données POST mais sans ouvrir de session:
pas de session_start() = pas accès à POST/GET

Déjà en corrigeant ces 2 points, on devrait y voir plus clair.

Si toutefois le phénomène de l'écran blanc se poursuit - la cause est très généralement une erreur 500 - il vous faudra passer en revue votre code en vérifiant:
- que chaque instruction est correctement fermée par un point-virgule
- que chaque parenthèse, crochet et marque de paragraphe a bien son équivalence fermée
- qu'il n'existe pas de boucle infinie (en l'état ce n'est pas votre cas mais ça peut servir)

Et si vraiment après tout ça le problème continu de plus belle, je vous invite à re-poster votre code final pour qu'on en discute. Mais je doute qu'on en arrive là. Smiley langue
Ce qui est curieux aussi, c'est la page blanche.

Alors que tu devrais avoir
Message envoyé !
ou
Envoie du mail échoué
JENCAL a écrit :
Ce qui est curieux aussi, c'est la page blanche.
Pas s'il teste en ligne et que l'hébergeur a verrouillé le paramètre display_errors. J'ai déjà eu ce cas et il fallait systématiquement passer par la plate-forme pour aller consulter les erreurs php via un gestionnaire de logs.
Modifié par Greg_Lumiere (14 Feb 2019 - 10:42)
Greg_Lumiere a écrit :
Pas s'il teste en ligne et que l'hébergeur a verrouillé le paramètre display_errors. J'ai déjà eu ce cas et il fallait systématiquement passer par la plate-forme pour aller consulter les erreurs php via un gestionnaire de logs.


Bah
il a un IF ELSE,
que le mail parte ou non, dans tous les cas ça passe dans le IF ou dans le ELSE. c'est ça qui est curieux.
C'est vrai Jencal !
D'autant qu'une variable introuvable provoque un Notice... étrange

Edit: Ne cherche pas, j'ai recopié son code sur une page de test du coup, je voulais en avoir le coeur net.

Ainsi à la ligne qui commence par ."VOUSETES: l'instruction est clôturée (idem 2 lignes plus bas).
Ensuite il reprend par une concaténation - chose qui ne peut fonctionner et bloque le parse.

donc
    $message = "Nom: ".$_POST["nom"]."<br>"
    ."Message: ".$_POST["message"]."<br>"
    ."nom: ".   $_POST['name']."<br>"
    ."prenom: ".$_POST['prenom']."<br>"
    ."email: ". $_POST['email']."<br>"
    ."tel: ".    $_POST['tel']."<br>"
    ."VOUSETES: ". $_POST['VOUSETES']."<br>";
    ."SUJET: ". $_POST['SUJET']."<br>";
    ."TYPEFORM: ". $_POST['TYPEFORM']."<br>";
    ."MESSAGE2: ". $_POST['MESSAGE2']."<br>";
devient
    $message = "Nom: ".$_POST["nom"]."<br>"
    ."Message: ".$_POST["message"]."<br>"
    ."nom: ".   $_POST['name']."<br>"
    ."prenom: ".$_POST['prenom']."<br>"
    ."email: ". $_POST['email']."<br>"
    ."tel: ".    $_POST['tel']."<br>"
    ."VOUSETES: ". $_POST['VOUSETES']."<br>"
    ."SUJET: ". $_POST['SUJET']."<br>"
    ."TYPEFORM: ". $_POST['TYPEFORM']."<br>"
    ."MESSAGE2: ". $_POST['MESSAGE2']."<br>";
Et là... Magie !
Modifié par Greg_Lumiere (14 Feb 2019 - 11:27)
Oui, bien vu.. le petit point virgule en trop.. deux fois ^^
Modifié par JENCAL (14 Feb 2019 - 11:32)
Nul duel ! Une complémentarité qui aboutit à une solution, voilà tout.

Moralité:
Développer du php sans forcer l'affichage des erreurs à l'écran conduit tôt ou tard à l'échec

S'il n'y a vraiment qu'une instruction à retenir, c'est bien celle de Jencal
error_reporting(E_ALL); ini_set('display_errors', 1);
Smiley cligne
Jencal à encore gagné comme à chaque fois, c'est le boss !!!! Smiley vieux Smiley nananere Smiley director

Cours du soir de 18 h à 19 h sur rendez-vous. Chèque accepté. Contacter par MP, Mr Jencal.
Modifié par Tintin75 (14 Feb 2019 - 11:45)
Greg_Lumiere a écrit :
Nul duel ! Une complémentarité qui aboutit à une solution, voilà tout.


C'est LA phrase que je retiendrais jaja Smiley hippy
Bonsoir !

Merci pour vos réponses et solutions. Il y avait bien les ";" en trop Smiley smile

Par contre, l'email n'apparait pas quand je reçois le formulaire (ni dans l'expéditeur).

Une solution ?

En vous remerciant encore pour vos intervention !

edit : Trouvé !

."email: ". $_POST['email']."<br>"


à remplacer par :

."email: ". $_POST['mail']."<br>"

Modifié par nAAb (14 Feb 2019 - 20:29)