par
Ryle » 11 mai 2021, 13:14
Salutations Mike 40ans de Belgique et bienvenue sur phpfrance !
1) le script que tu nous présentes récupères les informations envoyées par l'utilisateur pour les inclure dans l'entête et le corps du mail qui est envoyé. Rien n'est affiché à l'écran, mais tu peux parfaitement utiliser l'instruction echo pour afficher un message, où ajouter celui-ci en dehors des balises php.
Par exemple en vérifiant le succès de l'envoi du mail :
if ($send)
echo '"Merci ' . $name . ', votre formulaire a bien été envoyé.';
else
echo 'Oh la la... ça n\'a pas fonctionné'.
2) la fonction htmlspecialchars permet de convertir les caractères spéciaux d'une chaine en entités HTML afin qu'ils ne soient pas interprétés par le navigateur (ou le client de messagerie) et éviter ainsi des injections de code. C'est à dire empêcher l'utilisateur de t'envoyer un code potentiellement dangereux qui serait exécuté malgré toi (je pourrais par exemple inclure une ligne de code javascript à la place de mon nom et celle-ci s'exécuterait au moment où tu ouvres le mail).
Il faut donc utiliser htmlspecialchars lorsque tu as besoin d'afficher un élément (dans ton mail ou à l'écran) dont tu ne maitrise pas le contenu et qui pourrait être préjudiciable au bon affichage de ta page, voire à la sécurité.
Tu peux ainsi écrire $name = htmlspecialchars($_REQUEST['name']) pour protéger celui-ci avant de l'inclure dans ton mail à l'écran pour la confirmation du (1)
En revanche, il ne faut pas l'utiliser sur l'email (il y a d'autre façon pour valider que la chaine est bien une adresse mail), car tu risques d'altérer son contenu alors que tu as besoin de conserver son format brut pour l'utiliser dans les entêtes de ton mail. Mais tu peux néanmoins le protéger dans le corps du mail :
$body .= "<td style='border:none;'><strong>Email:</strong> " . htmlspecialchars($from) . "</td>";