Exercice PHP corrigé réalisation d’un formulaire de contact

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
$destinataire = 'Email de destinataire exemple
 aaa@gmail.com';
    $copie = 'oui';
    // si cette page est index.php?page=contact alors mettez index.php?page=contact
    // sinon, laissez vide
    $form_action = '';
    // Messages de confirmation du mail
    $Message_envoye = "Votre Message nous est bien parvenu !";
    $Message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";
    // Message d'erreur du formulaire
    $Message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'Email soit sans erreur.";
 
    function Rec($text)
    {
        $text = trim($text); // delete white spaces after & before text
        if (1 === get_magic_quotes_gpc())
        {
            $stripslashes = create_function('$txt', 'return stripslashes($txt);');
        }
        else
        {
            $stripslashes = create_function('$txt', 'return $txt;');
        }
        $text = $stripslashes($text);
        $text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
        $text = nl2br($text);
        return $text;
    };
//Vérification la syntaxe d'un Email
    function IsEmail($Email)
    {
        $pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
        return (eregi($pattern,$Email)) ? true : false;
    };
 
    $err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
 
    // si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
    $nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
    $Email   = (isset($_POST['Email']))   ? Rec($_POST['Email'])   : '';
    $Objet   = (isset($_POST['Objet']))   ? Rec($_POST['Objet'])   : '';
    $Message = (isset($_POST['Message'])) ? Rec($_POST['Message']) : '';
    if (isset($_POST['envoi']))
    {
        // On va vérifier les variables et l'Email ...
        $Email = (IsEmail($Email)) ? $Email : ''; // soit l'Email est vide si erroné, soit il vaut l'Email entré
        $err_formulaire = (IsEmail($Email)) ? false : true;
 
        if (($nom != '') && ($Email != '') && ($Objet != '') && ($Message != ''))
        {
            // les 4 variables sont remplies, on génère puis envoie le mail
            $headers = 'From: '.$nom.' <'.$Email.'>' . "\r\n";
            // envoyer une copie au visiteur ?
            if ($copie == 'oui')
            {
                $cible = $destinataire.','.$Email;
            }
            else
            {
                $cible = $destinataire;
            };
            // Remplacement de certains caractères spéciaux
            $Message = html_entity_decode($Message);
            $Message = str_replace('',"'",$Message);
            $Message = str_replace('',"'",$Message);
            $Message = str_replace('
','',$Message);
            $Message = str_replace('
','',$Message);
            // Envoi du mail
            if (mail($cible, $Objet, $Message, $headers))
            {
                echo '
 
'.$Message_envoye.'
'."\n";
            }
            else
            {
                echo '
 
'.$Message_non_envoye.'
'."\n";
            };
        }
        else
        {
            // une des 3 variables (ou plus) est vide ...
            echo '
 
'.$Message_formulaire_invalide.' Retour au formulaire
'."\n";
            $err_formulaire = true;
        };
    }; // fin du if (!isset($_POST['envoi']))
 
    if (($err_formulaire) || (!isset($_POST['envoi'])))
    {

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// afficher le formulaire
        echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
        echo '  <fieldset><legend>......</legend>'."\n";
        echo '      <p>'."\n";
        echo '          <label for="nom">Nom :</label>'."\n";
        echo '          <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
        echo '      </p>'."\n";
        echo '      <p>'."\n";
        echo '          <label for="Email">Email :</label>'."\n";
        echo '          <input type="text" id="Email" name="Email" value="'.stripslashes($Email).'" tabindex="2" />'."\n";
        echo '      </p>'."\n";
        echo '      <p>'."\n";
        echo '          <label for="Objet">Objet :</label>'."\n";
        echo '          <input type="text" id="Objet" name="Objet" value="'.stripslashes($Objet).'" tabindex="3" />'."\n";
        echo '      </p>'."\n";
        echo '      <p>'."\n";
        echo '          <label for="Message">Message :</label>'."\n";
        echo '      <textarea id="Message" name="Message" tabindex="4" cols="30" rows="8">'.stripslashes($Message).'</textarea>'."\n";
        echo '      </p>'."\n";
        echo '  </fieldset>'."\n";
 
        echo '  <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer" /></div>'."\n";
        echo '</form>'."\n";
 
    };
?>

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

1

Besoin d'aide ?