PHP Formulaire mail probleme d'appostrophe
Fermé
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
-
27 août 2007 à 09:41
yonis5555 Messages postés 71 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 7 janvier 2010 - 28 août 2007 à 18:17
yonis5555 Messages postés 71 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 7 janvier 2010 - 28 août 2007 à 18:17
A voir également:
- PHP Formulaire mail probleme d'appostrophe
- Problème yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Formulaire de réclamation facebook - Guide
- Windows live mail - Télécharger - Mail
- Thunderbird mail - Télécharger - Mail
14 réponses
Salut,
Il faut passer par la fonction stripslashes(), pour supprimer les / que php mets devant les accents:
$message = stripslashes(htmlentities($_POST['message']));
Deuxième point pour soumettre ton formulaire en le validant par Javascript à la place de:
onSubmit="MM_validateForm('name','','R','mail','','RisEmail','Answer','','R','message','','R');return document.MM_returnValue">
mets plutôt:
et dans ta fonction JS: MM_validateForm tu mets des return="false" dans tous tes tests si negatif
et return="true" en sortie de fonction, donc si tous les test n'ont pas été négatifs.
Il faut passer par la fonction stripslashes(), pour supprimer les / que php mets devant les accents:
$message = stripslashes(htmlentities($_POST['message']));
Deuxième point pour soumettre ton formulaire en le validant par Javascript à la place de:
onSubmit="MM_validateForm('name','','R','mail','','RisEmail','Answer','','R','message','','R');return document.MM_returnValue">
mets plutôt:
onSubmit="return MM_validateForm('name','','R','mail','','RisEmail','Answer','','R','message','','R');">
et dans ta fonction JS: MM_validateForm tu mets des return="false" dans tous tes tests si negatif
et return="true" en sortie de fonction, donc si tous les test n'ont pas été négatifs.
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
27 août 2007 à 12:07
27 août 2007 à 12:07
Merci... ca a enlevé mes slashs.... mais le problème est toujours là: les appostrophes ne sont pas là et après le M de Je m'appelle (par exemple) c'est toujours vide.
Tu mélanges les ' et les " dans une même ligne de concaténation, essayes plutôt en ne mettant que des "
$message_envoye ='Nom : ' . $name ."\r\n".'E-Mail :' . $mail . "\r\n".'Message : ' . $message ."\r\n" .'X-Mailer: PHP/' . phpversion();
ou même (les variables $..... sont interprétées par php dans les chaines limitées par des "):
$message_envoye ='Nom : ' . $name ."\r\n".'E-Mail :' . $mail . "\r\n".'Message : ' . $message ."\r\n" .'X-Mailer: PHP/' . phpversion();
$message_envoye ="Nom : ". $name ."\r\n"."E-Mail :" . $mail . "\r\n"."Message : " . $message ."\r\n" ."X-Mailer: PHP/' . phpversion();
ou même (les variables $..... sont interprétées par php dans les chaines limitées par des "):
$message_envoye ="Nom : $name \r\n E-Mail : $mail \r\n Message : $message \r\n X-Mailer: PHP/". phpversion();
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
27 août 2007 à 16:02
27 août 2007 à 16:02
Ca ne marche pas... et j'ai oublie aussi... les characteres speciaux (accents lettres etrangeres)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
As tu mis cette ligne dans les meta de tes pages html
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
27 août 2007 à 21:30
27 août 2007 à 21:30
oui.. et ca marche pas
Dans ta feuille contactus.html
<form action="contactus1.php" method="post" enctype="multipart/form-data"
enlèves: enctype="multipart/form-data" , c'est quand on veut uploader un fichier.
<form action="contactus1.php" method="post" enctype="multipart/form-data"
enlèves: enctype="multipart/form-data" , c'est quand on veut uploader un fichier.
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
28 août 2007 à 12:47
28 août 2007 à 12:47
Le probleme est toujours la... :(
Me revoilà,
je pense avoir trouvé où ça coince.
dans le fichier contactus1.php
echo("
<form method='post' action='contactus.php'>");
echo("<input name='name' type='hidden' id='name' value='$name'> \n");
echo("<input name='mail' type='hidden' id='mail' value='$mail'> \n");
echo("<input name='message' type='hidden' id='message' value='$message'> \n");
echo("<input name='destinataire' type='hidden' id='destinataire' value='$destinataire'> \n");
echo("<input type='hidden' name='objet' value='$objet'> \n");
echo(" <input type='hidden' name='ip' value='$ip'> \n");
echo("<input name='Suivant' type='submit' value='Suivant'> \n");
echo("</form>\n");
Ce sont les ' de part et d'autre de tes variables dans value='$message' qui gênent, ,car les apostrophes dans le message sont interprétées comme une fin de la chaine value=' ........'
alors tu les remplaces par des \" (il faut échapper les " par \ car tu as déja " en début de ta chaine echo
Au passage les parenthèses echo ( ) ne sont pas nécessaires!
Donc fais comme ça:
pour être puriste il faudrait faire pareil pour tous name=\"......\" type=\"....\"
et supprimes aussi enctype="multipart/form-data"
Quand la réponse n'est pas correcte, il y a une autre solution que le refresh:
- tu ne fais qu'un seul fichier contactus.php qui regroupe le formulaire et le traitement de la réponse sur le ciel.
mais ça on verra après.
je pense avoir trouvé où ça coince.
dans le fichier contactus1.php
echo("
<form method='post' action='contactus.php'>");
echo("<input name='name' type='hidden' id='name' value='$name'> \n");
echo("<input name='mail' type='hidden' id='mail' value='$mail'> \n");
echo("<input name='message' type='hidden' id='message' value='$message'> \n");
echo("<input name='destinataire' type='hidden' id='destinataire' value='$destinataire'> \n");
echo("<input type='hidden' name='objet' value='$objet'> \n");
echo(" <input type='hidden' name='ip' value='$ip'> \n");
echo("<input name='Suivant' type='submit' value='Suivant'> \n");
echo("</form>\n");
Ce sont les ' de part et d'autre de tes variables dans value='$message' qui gênent, ,car les apostrophes dans le message sont interprétées comme une fin de la chaine value=' ........'
alors tu les remplaces par des \" (il faut échapper les " par \ car tu as déja " en début de ta chaine echo
Au passage les parenthèses echo ( ) ne sont pas nécessaires!
Donc fais comme ça:
echo "<form method='post' action='contactus.php'>"; echo "<input name='name' type='hidden' id='name' value=\"$name\"> \n"; echo "<input name='mail' type='hidden' id='mail' value=\"$mail\"> \n"); echo "<input name='message' type='hidden' id='message' value=\"$message\"> \n"; ech ("<input name='destinataire' type='hidden' id='destinataire' value=\"$destinataire\"> \n"; echo "<input type='hidden' name='objet' value=\"$objet\"> \n"; echo " <input type='hidden' name='ip' value=\"$ip\"> \n"; echo "<input name='Suivant' type='submit' value='Suivant'> \n"; echo "</form>\n");
pour être puriste il faudrait faire pareil pour tous name=\"......\" type=\"....\"
et supprimes aussi enctype="multipart/form-data"
Quand la réponse n'est pas correcte, il y a une autre solution que le refresh:
- tu ne fais qu'un seul fichier contactus.php qui regroupe le formulaire et le traitement de la réponse sur le ciel.
mais ça on verra après.
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
28 août 2007 à 15:18
28 août 2007 à 15:18
Merci beaucoup ca a marché, pour les appostrophes mais pour les accents? ca m'affiche du codage...
au lieu de "écrire" ca m'affiche
Pareil pour l'object du message... pour tout en fait... et j'ai mis la balise meta qu'il faut.
au lieu de "écrire" ca m'affiche
écrire
Pareil pour l'object du message... pour tout en fait... et j'ai mis la balise meta qu'il faut.
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
28 août 2007 à 16:53
28 août 2007 à 16:53
Ca marche :):) a part quand il y a des " " dans le message
Alors laisse htmlentities et envoi ton mail au format HTML il faut rajouter qq chose dans le $from (MIME= ???)
Vas voir sur Google comment faire
Vas voir sur Google comment faire
yonis5555
Messages postés
71
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
7 janvier 2010
2
28 août 2007 à 18:17
28 août 2007 à 18:17
ok.. merci beaucoup en tout cas