Aller au contenu

formulaire de contact vers mon adresse mail


Sujets conseillés

Posté

Bonjour
Je suis novice
J'ai créé mon site internet.
Je l'ai mis en ligne avec filezilla tout va bien.

Mon formulaire de contact est donc contact.html où j'ai créé mon formulaire 
et j'y ai mis la ligne <form action="traitement.php" method="post">

et j'ai créé une page traitement.php où j'ai mis la ligne
$destinataire = moi@gmail.com' afin de recevoir les données par mail.

Mon formulaire n'est pas envoyé.
Quelqu'un pour vérifier mon codage?

Posté

Bonjour! Malheureusement sans le code il sera difficile de le vérifier ;)

avez-vous vérifié que votre hébergeur autorise l'utilisation de la fonction mail() en php? C'est assez commun d'avoir cela désactivé chez les hébergeurs.

 

Avec un bout de code je pourrais vous en dire plus!

 

Excellente journée!

Aenoa

Posté

merci donc mon traitement.php

pour les essais je suis chez lescigales.org

<?php

$destinataire = 'moi@gmail.com';

$copie = 'non'; 

$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.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'])     : '';
    $prenom   = (isset($_POST['prenom']))   ? Rec($_POST['prenom'])   : '';
    $telephone   = (isset($_POST['telephone']))   ? Rec($_POST['telephone'])   : '';
    $email   = (isset($_POST['email']))   ? Rec($_POST['email'])   : '';
    $motif   = (isset($_POST['motif']))   ? Rec($_POST['motif'])   : '';
    $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.' <'.$email.'>' . "\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(''', '', '"', '<br>', '<br />', '<', '>', '&', '…',   '’', '‘');
        $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);
 
    
        $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.html">Retour au formulaire</a></p>'."\n";
    };
};(!isset($_POST['envoi']))
?>

 

Posté

Mon fichier formulaire

<form action="traitement.php" method="post">
<p>
<strong>Nom<span style="color: #ff0000;">*</span> :</strong> <label for="nom"> </label> <input id="nom" name="nom" size="28" type="text" /> <br>
<strong>Prénom :</strong> <label for="prenom"></label> <input id="prenom" name="prenom" size="27" type="text" /> <br /> 

<strong>Téléphone<span style="color: #ff0000;">*</span> :<label for="telephone"></label></strong> <input id="telephone" name="telephone" size="27" type="text" /> <br>
 
<strong>Mail <span style="color: #ff0000;">*</span> : </strong><br /> <label for="email"> </label><input id="email" name="email" size="81" type="text" /></p>
<p>Pour quelle raison nous contactez-vous ?</p>
<label for="motif"></label> <select id="motif" name="motif"> <option value="reglement">Pour un renseignement</option> 
<option value="suggestion">Pour une suggestion</option>
<option value="remarque">Pour une remarque</option> 
<option value="recouvrement">Pour autre chose</option> 
 </select><br>
<p>Message <span style="color: #ff0000;">*</span> :</p>
<p><label for="message"></label> <textarea id="message" cols="52" rows="7" name="message"></textarea></p>
<input type="reset" value="Effacer" /> <input type="submit" value="Envoyer" />

 

Posté

Pour info, la fonction suivante est déclarée comme obsolète depuis php 7.4 et retourne toujours "false" depuis php 5.4.0

get_magic_quotes_gpc()

De plus, je ne vois aucune variable $_POST['envoi'] ni $_POST['objet']

L'absence de $_POST['envoi'] fait que la boucle principale n'est pas atteinte  et l'absence de $_POST['objet']oblige à changer ce qui suit

J'ai remplacé la ligne motif de ton formulaire par

<label for="objet"></label> <select id="objet" name="objet">

 

J'ai aussi modifié les lignes suivantes :

        $caracteres_speciaux     = array("'", "’", '"', '<br>', '<br />', '<', '>', '&', '…',   '’', "‘");
        $caracteres_remplacement = array("'",      "'",        '"',      '',    '',       '<',    '>',    '&',     '...

et remplacé le

if (!isset($_POST['envoi']))

par

if (!isset($_POST['message']))

Pour info, tu ne reçois que le message envoyé, pas le nom ni l'email de l'émetteur.

Il faudra compléter la ligne mail(...) ou changer le contenu de $message, par exemple :

        $message = "NOM : ".$nom."\nPRENOM : ".$prenom."\nTELEPHONE :".$telephone."\nEMAIL : ".$email."\nMESSAGE :".$message;

 

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...