Retour à la ligne formulaire PHP mail
Résolu/Fermé
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
-
11 nov. 2007 à 17:59
Stéphane - 19 janv. 2009 à 14:22
Stéphane - 19 janv. 2009 à 14:22
A voir également:
- Retour à la ligne formulaire PHP mail
- Aller à la ligne excel - Guide
- Yahoo mail - Accueil - Mail
- Publipostage mail - Accueil - Word
- Ligne occupée - Forum SFR
- Retour à la ligne google sheet - Forum Google Docs
17 réponses
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
14 nov. 2007 à 19:19
14 nov. 2007 à 19:19
J'ai inversé c'est dans cette ordre là:
nl2br(htmlentities($message))
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
12 nov. 2007 à 20:31
12 nov. 2007 à 20:31
Ben d'accord ça marche mais toujours les <br> s'affichent, et ne se traduisent pas en retours à la ligne, car les caractères HTML sont désactivés !
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
15 nov. 2007 à 01:53
15 nov. 2007 à 01:53
Rappel moi qu'elle est le problème ...
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
18 nov. 2007 à 00:08
18 nov. 2007 à 00:08
Exemple ce code qui selon moi est inutile :
Le 1er remplace les chevrons par un tiré
Le 2ème remplace les double cote par un simple cote
Le 3ème remplace & par son entité html
Alors la fonction htmlspecialchars() ferait l'affaire :
https://www.php.net/htmlspecialchars
Les remplacements effectués sont :
En bref t peux te limiter à ça :
$nom=preg_replace('#(<|>)#', '-', $_POST['nom']); $nom=str_replace('"', "'",$nom); $nom=str_replace('&', 'et',$nom);
Le 1er remplace les chevrons par un tiré
Le 2ème remplace les double cote par un simple cote
Le 3ème remplace & par son entité html
Alors la fonction htmlspecialchars() ferait l'affaire :
https://www.php.net/htmlspecialchars
Les remplacements effectués sont :
* "&" (et commercial) devient "& amp;"(sans l'espace) * """ (guillemets doubles) devient "& quot;" (sans l'espace) lorsque ENT_NOQUOTES n'est pas utilisée. * "'" (single quote) devient "& #039;" (sans l'espace) uniquement lorsque ENT_QUOTES est utilisée. * "<" (inférieur à) devient "& lt;"(sans l'espace) * ">" (supérieur à) devient "& gt;"(sans l'espace)
En bref t peux te limiter à ça :
$message=trim(stripslashes(nl2br(htmlspecialchars($message))));
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
11 nov. 2007 à 22:21
11 nov. 2007 à 22:21
Salut,
La fonction nl2br() est ton ami.
La fonction nl2br() est ton ami.
htmlspecialchars(nl2br($message))
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
12 nov. 2007 à 20:56
12 nov. 2007 à 20:56
On y peut rien si un maileur ne lit pas les balise html et si en plus de ça il n'affiche pas le text dans des balises <pre></pre>
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
12 nov. 2007 à 21:54
12 nov. 2007 à 21:54
salut,
les caractères HTML sont désactivés !
mais est-ce que tu envoies ton mail au format text ou au fotmat html ?
les caractères HTML sont désactivés !
mais est-ce que tu envoies ton mail au format text ou au fotmat html ?
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
13 nov. 2007 à 18:41
13 nov. 2007 à 18:41
HTML bien sûr
Je reformate le message tapé avec une mise en forme, l'ajout de textes etc...
Ici, les balises HTML marchent, mais pas dans la récupération $message du textarea du message, car elles sont automatiquement désactivées (surement converties en >)
Merci
Je reformate le message tapé avec une mise en forme, l'ajout de textes etc...
Ici, les balises HTML marchent, mais pas dans la récupération $message du textarea du message, car elles sont automatiquement désactivées (surement converties en >)
Merci
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
13 nov. 2007 à 20:45
13 nov. 2007 à 20:45
En même temps si tu met un htmlspecialchars c'est normal ;-)
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
14 nov. 2007 à 17:47
14 nov. 2007 à 17:47
Ben comment faire alors ?
C'est dangereux de laisser activé le HTML, non ?
Dans le forum de CCM il le font bien alors pourquoi ça marcherait pas chez moi ?
C'est dangereux de laisser activé le HTML, non ?
Dans le forum de CCM il le font bien alors pourquoi ça marcherait pas chez moi ?
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
14 nov. 2007 à 20:56
14 nov. 2007 à 20:56
Quoi ?
Je met ça où ?
Pour plus de clarté, je te met la partie du code qui correspond à l'envoi du mail (j'ai utilisé le modèle du formulaire php de CCM que j'ai modifié) :
$message récupère le contenu de la textarea message. Il est intégré au $messagefinal, qui est envoyé par mail.
les autres variables récupèrent le nom, le mail, l'adresse, ...
Une autre partie du code :
Voilà
Merci
Je met ça où ?
Pour plus de clarté, je te met la partie du code qui correspond à l'envoi du mail (j'ai utilisé le modèle du formulaire php de CCM que j'ai modifié) :
$objet='.::Nouvelle question - Consultations en ligne::.'; $headers='From:'.$votremail."\r\n".'To:'.$mail."\r\n".'Subject:'.$objet."\r\n".'Content-type:text/html;charset=fr-ascii\r\n'.'MIME-Version: 1.0\r\n'.'Sent:'.date('l, F d, Y H:i'); $messagefinal="<html>Bonjour !<br>Vous avez reçu un mail envoyé pour les consultations en ligne.<br>Les champs contenant un tiret n'ont pas été remplis.<br>Vérifiez que les informations (nom et adresse e-mail) correspondent bien à celles indiquées sur le récapitulatif du paiement PayPal. Si c'est le cas, vous pouvez répondre au client en cliquant sur le bouton 'Répondre'.<br><br>>><strong>Nom :</strong> $nom<br>>><strong>Adresse e-mail :</strong> $votremail<br>>><strong>Adresse postale :</strong> $adresse - $code $ville<br>>><strong>Téléphone(s) :</strong> $tel - $tel2<br><br>>><strong>Question :</strong><br>$message</html>"; if(mail($destinataire,$objet,$messagefinal,$headers))
$message récupère le contenu de la textarea message. Il est intégré au $messagefinal, qui est envoyé par mail.
les autres variables récupèrent le nom, le mail, l'adresse, ...
Une autre partie du code :
$message=preg_replace('#(<|>)#', '-', $_POST['message']); $message=str_replace('"', "'",$message); $message=str_replace('&', 'et',$message); $message=str_replace('é', 'é',$message); $message=str_replace('è', 'è',$message); $message=str_replace("\n","<br>", $message); $nom=preg_replace('#(<|>)#', '-', $_POST['nom']); $nom=str_replace('"', "'",$nom); $nom=str_replace('&', 'et',$nom); $adresse=preg_replace('#(<|>)#', '-', $_POST['adresse']); $adresse=str_replace('"', "'",$adresse); $adresse=str_replace('&', 'et',$adresse); $ville=preg_replace('#(<|>)#', '-', $_POST['ville']); $ville=str_replace('"', "'",$ville); $ville=str_replace('&', 'et',$ville); // On assigne et/ou protège nos variables $votremail=stripslashes(htmlentities($_POST['votremail'])); $message=stripslashes(htmlspecialchars($message)); $nom=stripslashes(htmlspecialchars($nom)); $adresse=stripslashes(htmlspecialchars($adresse)); $code=stripslashes(htmlspecialchars($code)); $ville=stripslashes(htmlspecialchars($ville)); $tel=stripslashes(htmlspecialchars($tel)); $tel2=stripslashes(htmlspecialchars($tel2)); //input envoi $envoi=htmlentities($_POST['envoi']); //on enlève les espaces $votremail=trim($votremail); $message=trim($message); $nom=trim($nom); $adresse=trim($adresse); $code=trim($code); $ville=trim($ville); $tel=trim($tel); $pot=trim($pot);
Voilà
Merci
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
15 nov. 2007 à 22:00
15 nov. 2007 à 22:00
La fonction nl2br traduit bien les \r\n en <br>, mais ça compte comme si l'internaute avait tapé <br>. Or, l'insetion de balises html est désactivés par htmlspecialchars (j'ai gardé le modèle du formulaire foruni sur CCM dans les trucs & astuces)
Donc dans la mail envoyé apparaît :
"Première ligne <br> Deuxième ligne <br> Troisième ligne"
à la place de :
"Première
Deuxième
Troisième"
Sinon, peut être que je peux réactive rles caractères html ?
Donc dans la mail envoyé apparaît :
"Première ligne <br> Deuxième ligne <br> Troisième ligne"
à la place de :
"Première
Deuxième
Troisième"
Sinon, peut être que je peux réactive rles caractères html ?
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
17 nov. 2007 à 21:59
17 nov. 2007 à 21:59
Quelqu'un a une idée ?
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
17 nov. 2007 à 23:14
17 nov. 2007 à 23:14
Est ce que tu as essayé de recevoir tes mails sur une autre messagerie ?
Sinon la nouvelle partie du code est bordélique, le code est redondant, il faut lire toute les lien une par une pour savoir ce qu'elle font, alors que l'utilisation de fonction serait beaucoup plus lisible.
De plus découvrir le code petit bout par petit ne peut pas nous mener bien loin, est-ce qu'il y a tout ?
Est-ce qu'il y a uniquement la variable $message qui pose problème ? Ou est-ce l'intégralité de $messagefinal ?
Sinon la nouvelle partie du code est bordélique, le code est redondant, il faut lire toute les lien une par une pour savoir ce qu'elle font, alors que l'utilisation de fonction serait beaucoup plus lisible.
De plus découvrir le code petit bout par petit ne peut pas nous mener bien loin, est-ce qu'il y a tout ?
Est-ce qu'il y a uniquement la variable $message qui pose problème ? Ou est-ce l'intégralité de $messagefinal ?
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
18 nov. 2007 à 10:59
18 nov. 2007 à 10:59
OK Super ça marche enfin ! Merci !
J'ai enlevé
et j'ai mis
Merci encore @+
Sinon : qu'est-ce qui va pa dans le nouveau code "bordelique" ?
J'ai enlevé
$message=preg_replace('#(<|>)#', '-', $_POST['message']);
et j'ai mis
$message=trim(stripslashes(nl2br(htmlspecialchars($message))));
Merci encore @+
Sinon : qu'est-ce qui va pa dans le nouveau code "bordelique" ?
s.spark
Messages postés
2485
Date d'inscription
vendredi 29 octobre 2004
Statut
Contributeur
Dernière intervention
13 février 2018
618
18 nov. 2007 à 13:44
18 nov. 2007 à 13:44
T'aurais pu créer la fonction
etc. ...
function replace($texte) { $texte=preg_replace('#(<|>)#', '-', $_POST['texte']); $texte=str_replace('"', "'",$texte); $texte=str_replace('&', 'et',$texte); return $texte; }
replace($nom); replace($adresse);
etc. ...
Mysterious_fea
Messages postés
401
Date d'inscription
vendredi 29 juin 2007
Statut
Membre
Dernière intervention
23 mars 2013
35
20 nov. 2007 à 16:07
20 nov. 2007 à 16:07
OK merci @+