Bonjour,

Sur la page contact, j'ai remarqué un problème. En effet, après avoir soumi le formulaire, l'expediteur doit recevoir un accusé de réception , or il ne reçoit pas. Il n'affiche pas de message d'erreur mais l'accusé n'est pas envoyé. Pourtant il affiche comme quoi le message de confirmation a été envoyé.

Je suis un peu perdu, vous pouvez m'aider?

<?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_nom"])) $_POST["son_nom"]=trim(stripslashes($_POST["son_nom"])); // trim()  enlève les espaces en début et fin de chaine

    if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"])); // stripslashes()  retire les backslashes ==> \' devient '

    if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));

    if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));

    // Après la mise en forme, on vérifie la validité des champs

    if (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 (!preg_match("$[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\.[a-z]{2,4}$",$_POST["son_email"])){ // On vérifie si l'email est bien de la forme messagerie@domaine.tld (cf cours d'expressions régulières)

        $erreur="Votre adresse e-mail n'est pas valide.";

    }

    elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet

        $erreur="Vous devez entrer l'objet de votre message.";

    }

    elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message

        $erreur="Merci de saisir un message.";

    }

    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=\"font-family:Arial\"><span style=\"color:red\">".$erreur."</span></span><br /><br />\n"; // On affiche le message correspondant à l'erreur

    }

    ?>

    <!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->

    <form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->

    <p style="text-align:left">

    <label for="son_nom">Nom </label><br /> <!-- Intitulé du champ pseudo -->

    <input type="text" size="40" name="son_nom" id="son_nom" value="<?php

        if (!empty($_POST["son_nom"])) {

        // le pseudo de l'expéditeur a été saisi --> le réafficher

        echo htmlspecialchars($_POST["son_nom"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &amp;

        }

        ?>" />

    <br />

    <label for="son_email">E-mail *</label><br /> <!-- Intitulé du champ e-mail -->

    <input type="text" size="40" name="son_email" id="son_email" value="<?php

        if (!empty($_POST["son_email"])) {

        // l'e-mail de l'expéditeur a été saisi --> le réafficher

        echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);

        }

        ?>" />

    <br />

    <label for="son_objet">Objet *</label><br /> <!-- Intitulé du champ objet -->

    <input type="text" size="40" name="son_objet" id="son_objet" value="<?php

        if (!empty($_POST["son_objet"])) {

        // l'objet du message a été saisi --> le réafficher

        echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);

        }

        ?>" />

    <br />

    <label for="son_message">Message *</label><br /> <!-- Intitulé du champ message -->

    <textarea name="son_message" id="son_message" cols="50" rows="10"><?php

    if (isset($_POST["son_message"])) {

        // le message a été saisi --> le réafficher

        echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);

    }

    ?>

    </textarea>

    <br />

    <input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />

    </p>

    </form>

    <!-- FIN du formulaire HTML -->

    <?php

}

else { // Sinon l'état est ok donc on envoie le mail

    $son_nom = $bdd->quote($_GET["son_nom"]);  

     $son_email = $bdd->quote($_GET["son_email"]);  

     $son_objet = $bdd->quote($_GET["son_objet"]); 

     $son_message = $bdd->quote($_GET["son_message"]);  

    $mon_email = "webmaster@cine-seriestv.tk"; // Mise en forme du message que vous recevrez

    $mon_nom = "cine-seriestv.tk";

    $mon_url = "http://www.cine-seriestv.tk";

    $msg_pour_moi = "- Son Nom : $son_nom \n

    - Son E-mail : $son_email \n

    - Objet du message : $son_objet \n

    - Message : \n $son_message \n\n";

    // Mise en forme de l'accusé réception qu'il recevra

    $accuse_pour_lui = "Bonjour $son_nom,\n

    Nous venons de recevoir votre message et nous vous en remercions. Nous vous répondrons dans les plus brefs délais. Voici un rappel des informations que vous avez saisi: \n\n

    - Votre E-mail : $son_email \n

    - L'objet de votre message : $son_objet \n

    - Votre message : \n $son_message \n\n

    Merci et à bientôt sur http://www.cine-seriestv.tk !";

    // Envoie du mail

    $entete = "From: " . $mon_nom . " <" . $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,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé

        echo "<p style=\"text-align:center; color: green\">Votre message a bien &eacute;t&eacute; envoy&eacute;, vous recevrez une confirmation par mail d'ici peu.<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"]."\">Merci de réessayer...</a></p>\n"; // On propose un lien de retour vers le formulaire

    }

}

?> 

Merci d'avance,

3 réponses


Bonsoir.
Pour commencer, tu devrais séparer le formulaire du traitement.
Pour faire simple, une page contenu le formulaire et le visuel pour l'utilisateur et une page pour le traitement php.
Par exemple :

  • contact.php (formulaire)
  • mail.php (traitement du formulaire + envoi du mail)

Une fois que ce sera fait, s'il y a toujours un problème, reviens nous montrer ton nouveau code, car là c'est limite incompréhensible.

fanweb
Auteur

Bonsoir,

Bon je vais les séparer alors et je reviens après...

fanweb
Auteur

J'ai enlevé le @ mais aucun message d'erreur n'affiche...