PHP Problème formulaire
nicos91
-
noux -
noux -
Bonjour à tous,
Sur mon site web j'ai créé un formulaire en utilisant du PHP. Celui ci propose à l'utilisateur d'entrer son nom, prénom, adresse e-mail, un message, et de choisir le destinataire en cochant un bouton radio parmi plusieurs choix. Chaque bouton envoie le message à une autre adresse mail.
Les problèmes sont les suivants :
- Lorsque je teste mon formulaire, et que j'écris un message qui contient des doubles guillemets, j'obtiens le résultat suivant dans ma boite mail :
Salut comment \"ca va\"?, si je ne fais pas de \"fautes\"
au lieu de : Salut comment "ca va" ?, si je ne fais pas de "fautes"
Vous constaterez dans mon code php que j'ai ajouté les lignes :
Cependant j'aimerais recevoir un mail sans antislash, comme écrit ci-dessus.
- Mon deuxième problème, c'est que j'aimerais pouvoir répondre directement à la personne qui a écrit le message (grâce à son adresse mail), en cliquant sur "répondre" dans mon logiciel de messagerie. Alors j'ai mis la ligne :
Est-elle correcte ? car quand je clique sur répondre dans mon logiciel de messagerie, j'obtiens la ligne suivante dans le destinataire :
nicos91@wanadoo.fr, nicos91@orange.fr, Reply-To:nicos91@wanadoo.fr
A noter que je ne sais pas d'où viens le "nicos91@orange.fr" car cette adresse n'existe pas (du moins ne m'appartient pas). Et pourquoi ma vraie adresse apparait-elle deux fois ? Est-ce du à mon fichier php.ini dans lequel j'ai renseigné cette adresse pour les tests avec smtp ?
Merci d'avance de votre précieuse aide.
Voilà le code php complet :
Sur mon site web j'ai créé un formulaire en utilisant du PHP. Celui ci propose à l'utilisateur d'entrer son nom, prénom, adresse e-mail, un message, et de choisir le destinataire en cochant un bouton radio parmi plusieurs choix. Chaque bouton envoie le message à une autre adresse mail.
Les problèmes sont les suivants :
- Lorsque je teste mon formulaire, et que j'écris un message qui contient des doubles guillemets, j'obtiens le résultat suivant dans ma boite mail :
Salut comment \"ca va\"?, si je ne fais pas de \"fautes\"
au lieu de : Salut comment "ca va" ?, si je ne fais pas de "fautes"
Vous constaterez dans mon code php que j'ai ajouté les lignes :
$message = htmlspecialchars(addslashes($message)); // pour ajouter des antislash
Cependant j'aimerais recevoir un mail sans antislash, comme écrit ci-dessus.
- Mon deuxième problème, c'est que j'aimerais pouvoir répondre directement à la personne qui a écrit le message (grâce à son adresse mail), en cliquant sur "répondre" dans mon logiciel de messagerie. Alors j'ai mis la ligne :
$entete = "From : $nom \n Reply-To : $email";
Est-elle correcte ? car quand je clique sur répondre dans mon logiciel de messagerie, j'obtiens la ligne suivante dans le destinataire :
nicos91@wanadoo.fr, nicos91@orange.fr, Reply-To:nicos91@wanadoo.fr
A noter que je ne sais pas d'où viens le "nicos91@orange.fr" car cette adresse n'existe pas (du moins ne m'appartient pas). Et pourquoi ma vraie adresse apparait-elle deux fois ? Est-ce du à mon fichier php.ini dans lequel j'ai renseigné cette adresse pour les tests avec smtp ?
Merci d'avance de votre précieuse aide.
Voilà le code php complet :
<?php $erreur = NULL; $info = NULL; if(!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['email']) && !empty($_POST['message'])) { extract($_POST); if($_POST['RadioGroup1'] == 'webmaster') { if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$email)) { $nom = htmlspecialchars(addslashes($nom)); $prenom = htmlspecialchars(addslashes($prenom)); $email = htmlspecialchars(addslashes($email)); $message = htmlspecialchars(addslashes($message)); $message = str_replace("\'","'",$message); $destinataire = "veroniq.schiff@orange.fr"; $sujet = "Formulaire de contact"; $entete = "From : $nom \n Reply-To : $email"; $message = "Vous venez de recevoir un nouveau message en provenance du site www.xxxxxxxx.fr \n Nom : $nom \n Prenom : $prenom \n Email : $email \n Message : $message"; mail($destinataire, $sujet, $message, $entete); $info = "Votre message a bien été envoyé."; unset($_POST, $message, $nom, $prenom, $email); } else { $erreur="Adresse e-mail invalide"; } } else ($_POST['RadioGroup1'] == 'president') { if(preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$email)) { $nom = htmlspecialchars(addslashes($nom)); $prenom = htmlspecialchars(addslashes($prenom)); $email = htmlspecialchars(addslashes($email)); $message = htmlspecialchars(addslashes($message)); $destinataire = "philippe.schiff@orange.fr"; $sujet = "Formulaire de contact"; $entete = "From : $nom \n Reply-To : $email"; $message = "Vous venez de recevoir un nouveau message en provenance du site www.xxxxxxxxxxx.fr \n Nom : $nom \n Prenom : $prenom \n Email : $email \n Message : $message"; mail($destinataire, $sujet, $message, $entete); $info = "Votre message a bien été envoyé."; unset($_POST, $message, $nom, $prenom, $email); } else { $erreur="Adresse e-mail invalide"; } } } else { $erreur = "Veuillez remplir tous les champs obligatoires*"; } ?>
A voir également:
- PHP Problème formulaire
- Whatsapp formulaire opposition - Guide
- Formulaire de réclamation facebook - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Confirmer le nouvel envoi du formulaire err_cache_miss - Forum Webmastering
2 réponses
Salut,
pour afficher ton mail correctement, tu peux définir dans son entête que le contenu sera de l'HTML avec l'entête "Content-type". Puis tu utilise la fonction php htmlentities() pour afficher correctement le message.
Par exemple:
pour afficher ton mail correctement, tu peux définir dans son entête que le contenu sera de l'HTML avec l'entête "Content-type". Puis tu utilise la fonction php htmlentities() pour afficher correctement le message.
Par exemple:
$entete = "Content-type: text/html; charset=utf-8"; $message = htmlentities($message, ENT_QUOTES, "UTF-8");
Merci beaucoup, en effet ça fonctionne, mais seulement en supprimant les lignes :
En laissant ces lignes, le message ne s'affichait pas, mais en les mettant en commentaires, plus de problèmes !! C'est normal ?
Merci encore
$message = htmlspecialchars(addslashes($message)); $message = str_replace("\'","'",$message);
En laissant ces lignes, le message ne s'affichait pas, mais en les mettant en commentaires, plus de problèmes !! C'est normal ?
Merci encore