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 compte désactivé - Guide
- Formulaire de reclamation instagram - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
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