suite au tutoriel suivant http://a-pellegrini.developpez.com/t...s/php/mail/#L4
j'ai voulu faire un formulaire de contact sécurisé avec un envoi d'email sur ma boite.
Mais j'ai quelques soucis pour bien le protéger et je ne vois pas d'où cela peut venir, je m'explique :
je n'arrive par exemple pas à envoyer le message d'erreur en cas de champs vide ou bien de champs avec des balises.Par contre, pour les erreurs d'email cela marche bien.
Je signale que mon site est sur un espace perso chez Free. Cela joue peut être même si j'ai vu la liste des fonctions que l'on ne peut pas mettre, et qu'aucune d'entre-elles n'est présente ici.
Merci d'avance de votre aide.
Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 <?php /* Récupération des valeurs des champs du formulaire */ if (get_magic_quotes_gpc()) { $nom = stripslashes(trim($_POST['nom'])); $expediteur = stripslashes(trim($_POST['email'])); $sujet = stripslashes(trim($_POST['sujet'])); $message = stripslashes(trim($_POST['message'])); } else { $nom = trim($_POST['nom']); $expediteur = trim($_POST['email']); $sujet = trim($_POST['sujet']); $message = trim($_POST['message']); } /* Expression régulière permettant de vérifier si le * format d'une adresse e-mail est correct */ $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i'; /* Expression régulière permettant de vérifier qu'aucun * en-tête n'est inséré dans nos champs */ $regex_head = '/[\n\r]/'; /* Si le formulaire n'est pas posté de notre site on renvoie * vers la page d'accueil */ if($_SERVER['HTTP_REFERER'] != 'http://www.xxx.fr/futur/contact.php') { header('Location: http://www.xxx.fr/futur/'); } /* On vérifie que tous les champs sont remplis */ elseif (empty($nom) || empty($expediteur) || empty($sujet) || empty($message)) { echo "Tous les champs doivent être renseignés"; } /* On vérifie que le format de l'e-mail est correct */ elseif (!preg_match($regex_mail, $expediteur)) { echo "L'adresse email n'est pas valide"; } /* On vérifie qu'il n'y a aucun header dans les champs */ elseif (preg_match($regex_head, $expediteur) || preg_match($regex_head, $nom) || preg_match($regex_head, $sujet)) { echo "En-têtes interdites dans les champs du formulaire"; } /* Destinataire (votre adresse e-mail) */ $to = 'xxx@xxx.com'; /* Construction du message */ $msg = 'Bonjour,'."\r\n\r\n"; $msg .= 'Ce mail a été envoyé depuis mon site perso par :'.$nom."\r\n\r\n"; $msg .= 'Voici le message :'.$sujet."\r\n"; $msg .= '***************************'."\r\n"; $msg .= $message."\r\n"; $msg .= '***************************'."\r\n"; /* En-têtes de l'e-mail */ $headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n"; /* Envoi de l'e-mail */ if (mail($to, $sujet, $msg, $headers)) { echo "E-mail envoyé avec succès"; } else { echo "Erreur d'envoi de l'e-mail"; } ?>
Partager