begin process at 2012 05 28 12:57:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Afficher les "é" dans un e-mail envoyé par formulaire


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Afficher les "é" dans un e-mail envoyé par formulaire

vendredi 15 janvier 2010 à 00:29:00 | Afficher les "é" dans un e-mail envoyé par formulaire

BBFUNK01

Bonsoir à toutes et à tous,

j'ai créé un formulaire e-mail qui est en fait un système de panier pour effectuer des commandes en ligne.
Le formulaire est en Flash, tout fonctionne à merveille excepté un petit détail embêtant : dans mon php, je définis des variables en fonction de ce qui aura été saisi dans le formulaire dans le flash, et donc j'ai un problème concernant l'affichage dans l'e-mail de cette variable : "licence illimitée".
Sur l'e-mail reçu, cela affiche "licence illimitt?", pourtant il me semble que la fonction "decoder" dans mon php est correct.

Voici le php en question :
Code PHP :
<?php
// On récupère les infos envoyé par le flash
$expediteur = $_POST['expediteur'];
$destinataire = $_POST['destinataire'];
$objet = $_POST['objet'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$phone = $_POST['phone'];
$com1 = $_POST['com1'];
$prix1 = $_POST['prix1'];
$com2 = $_POST['com2'];
$prix2 = $_POST['prix2'];
$com3 = $_POST['com3'];
$prix3 = $_POST['prix3'];
$com4 = $_POST['com4'];
$prix4 = $_POST['prix4'];
$com5 = $_POST['com5'];
$prix5 = $_POST['prix5'];
$com6 = $_POST['com6'];
$prix6 = $_POST['prix6'];
$total = $_POST['prixtotal'];
$licence1 = $prix1;
$licence2 = $prix2;
$licence3 = $prix3;
$licence4 = $prix4;
$licence5 = $prix5;
$licence6 = $prix6;

if ($prix1 == "45"){
	$licence1 = "Licence standard";
}else if ($prix1 == "69"){
	$licence1 = "Licence broadcasting";
}else if (
	$prix1 == "79"){
	$licence1 = "Licence reproduction 10 000 ex.";
}else if ($prix1 == "99"){
	$licence1 = "Licence reproduction illimitée";
}else if ($prix1 == "0"){
	$licence1 = "";
}

if ($prix2 == "45"){
	$licence2 = "Licence standard";
}else if ($prix2 == "69"){
	$licence2 = "Licence broadcasting";
}else if ($prix2 == "79"){
	$licence2 = "Licence reproduction 10 000 ex.";
}else if ($prix2 == "99"){
	$licence2 = "Licence reproduction illimitée";
}else if ($prix2 == "0"){
	$licence2 = "";
}

if ($prix3 == "45"){
	$licence3 = "Licence standard";
}else if ($prix3 == "69"){
	$licence3 = "Licence broadcasting";
}else if ($prix3 == "79"){
	$licence3 = "Licence reproduction 10 000 ex.";
}else if ($prix3 == "99"){
	$licence3 = "Licence reproduction illimitée";
}else if ($prix3 == "0"){
	$licence3 = "";
}

if ($prix4 == "45"){
	$licence4 = "Licence standard";
}else if($prix4 == "69"){
	$licence4 = "Licence broadcasting";
}else if($prix4 == "79"){
	$licence4 = "Licence reproduction 10 000 ex.";
}else if($prix4 == "99"){
	$licence4 = "Licence reproduction illimitée";
}else if ($prix4 == "0"){
	$licence4 = "";
}

if ($prix5 == "45"){
	$licence5 = "Licence standard";
}else if($prix5 == "69"){
	$licence5 = "Licence broadcasting";
}else if($prix5 == "79"){
	$licence5 = "Licence reproduction 10 000 ex.";
}else if($prix5 == "99"){
	$licence5 = "Licence reproduction illimitée";
}else if ($prix5 == "0"){
	$licence5 = "";
}

if ($prix6 == "45"){
	$licence6 = "Licence standard";
}else if($prix6 == "69"){
	$licence6 = "Licence broadcasting";
}else if($prix6 == "79"){
	$licence6 = "Licence reproduction 10 000 ex.";
}else if($prix6 == "99"){
	$licence6 = "Licence reproduction illimitée";
}else if ($prix6 == "0"){
	$licence6 = "";
}

// Fonction de mise en forme du texte (caractères spéciaux, retours à la ligne, etc...)
function decoder($texte){
	$texte = utf8_decode($texte);
	$texte = str_replace("\r", "\n", $texte);
	$texte = str_replace("\'", "'", $texte);
	return $texte;
}
// Mise en forme du contenu du message et de l'objet
$objet = decoder($objet);
$contenu_complet = "\nNom : ".decoder($nom)."\n"."\nPrénom : ".decoder($prenom)."\n"."\nTéléphone : ".decoder($phone)."\n"."\n".decoder($com1)." - ".decoder($licence1)." - Prix : ".decoder($prix1)." euros"."\n".decoder($com2)." - ".decoder($licence2)." - Prix : ".decoder($prix2)." euros"."\n".decoder($com3)." - ".decoder($licence3)." - Prix : ".decoder($prix3)." euros"."\n".decoder($com4)." - ".decoder($licence4)." - Prix : ".decoder($prix4)." euros"."\n".decoder($com5)." - ".decoder($licence5)." - Prix : ".decoder($prix5)." euros"."\n".decoder($com6)." - ".decoder($licence6)." - Prix : ".decoder($prix6)." euros"."\n"."\nTotal : ".decoder($total)." euros";
// Headers
$headers = "MIME-Version: 1.0\r\n"; 
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n"; 
$headers .= "From: $expediteur <$expediteur>\r\nReply-to : $expediteur <$expediteur>\nX-Mailer:PHP"; 
// On envoie le mail avec un test if pour savoir si ca a fonctionné ou pas
if(mail($destinataire,$objet,$contenu_complet,$headers)) {
// Si c'est bon, on envoie ceci à flash
echo "&retour=OK&";

       $answer = "Votre commande a bien été envoyée.\n

	              Détail de votre commande :\n\n".

				  "\nNom : ".decoder($nom)."\n"."\nPrénom : ".decoder($prenom)."\n"."\nTéléphone : ".decoder($phone)."\n"."\n".decoder($com1)." - ".decoder($licence1)." - Prix : ".decoder($prix1)." euros"."\n".decoder($com2)." - ".decoder($licence2)." - Prix : ".decoder($prix2)." euros"."\n".decoder($com3)." - ".decoder($licence3)." - Prix : ".decoder($prix3)." euros"."\n".decoder($com4)." - ".decoder($licence4)." - Prix : ".decoder($prix4)." euros"."\n".decoder($com5)." - ".decoder($licence5)." - Prix : ".decoder($prix5)." euros"."\n".decoder($com6)." - ".decoder($licence6)." - Prix : ".decoder($prix6)." euros"."\n"."\nTotal : ".decoder($total)." euros net (T.V.A. non applicable, article 293B du CGI)"."\n\n".
				  "Veuillez s.v.p. adresser votre règlement par chèque\n

				  à l'ordre de Jonathan LUSY, à cette adresse :\n\n

				  Jonathan LUSY\n
				  88A, Route de Saint-Rémy - Les Bagnardes\n
				  01310 - SAINT-REMY\n\n
				  Dès réception de votre règlement, des identifiants vous\n
				  seront attribués afin d'accéder à votre espace privé\n

				  où vous pourrez télécharger les fichiers mp3 de votre commande.\n\n
				  Si vous souhaitez obtenir les fichiers aux formats aif, wave, ou autres,\n
				  répondez à cet e-mail en indiquant votre adresse postale.\n
				  et en précisant le ou les formats souhaités.\n\n
				  Cordialement,\n\n
				  Jonathan Lusy\n
				  MUSICHRONO\n
				  http://www.musichrono.com\n
				  contact@musichrono.com\n
				  Tél.: 04.74.25.81.41\n
				  Mobile: 06.17.59.14.50";

       // Headers
       $headers = "MIME-Version: 1.0\r\n"; 
       $headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
       $headers .= "From: contact@musichrono.com\r\n";
       mail( $_POST['expediteur'], "ACCUSE DE RECEPTION - MUSICHRONO", stripslashes($answer)."\n\n", $headers);
	   
// qui interpretera ca comme l'envoi de la variable retour (voir le flash)
} else { 
// Pareil si ca a échoué
echo "&retour=ERREUR&"; 
} 
?>


Si jamais quelqu'un sait comment je peux arranger ça, je suis preneur.

Merci,

BBFUNK01
vendredi 15 janvier 2010 à 06:06:27 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

kohntark

Membre Club
Salut,

Il y a fort à parier que ton script soit en ISO-8859 et les données provenant de flash en UTF-8.
Ainsi tu fais un utf8_decode sur de l'ISO-8859 => bad

Le mieux reste sans doute d'harmoniser tout ça en UTF-8.

Cordialement,


Kohntark -

vendredi 15 janvier 2010 à 11:38:18 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

BBFUNK01

Salut Kohntark,

en fait tous mes champs s'affichent correctement, ainsi que les messages stockés dans le php. Le truc que je ne comprend pas c'est que ma variable "$licence", qui est définie dans le php, si elle est reconnue comme "licence illimitée", affiche "licence illimit?" dans l'e-mail.

En gros voici le genre d'e-mail que le php génère :

Votre commande a bien été envoyée.

Détail de votre commande :


Nom : lusy

Prénom : jonathan

Téléphone : 0474258141

surf rock - Licence standard - Prix : 45 euros
surf rock - Licence reproduction illimit? - Prix : 99 euros
Sélectionnez un morceau - - Prix : 0 euros
Sélectionnez un morceau - - Prix : 0 euros
Sélectionnez un morceau - - Prix : 0 euros
Sélectionnez un morceau - - Prix : 0 euros

Total : 144 euros net (T.V.A. non applicable, article 293B du CGI)

Veuillez s.v.p. adresser votre règlement par chèque

à l'ordre de Jonathan LUSY, à cette adresse :


Jonathan LUSY

88A, Route de Saint-Rémy - Les Bagnardes

01310 - SAINT-REMY


Dès réception de votre règlement, des identifiants vous

seront attribués afin d'accéder à votre espace privé

où vous pourrez télécharger les fichiers mp3 de votre commande.


Si vous souhaitez obtenir les fichiers aux formats aif, wave, ou autres,

répondez à cet e-mail en indiquant votre adresse postale.

et en précisant le ou les formats souhaités.

Donc à mon avis il faut que j'intervienne dans ma déclaration de variable "$licence", j'ai essayé en mettant :
Code PHP :
if ($prix1 == "45"){
	$licence1 = "Licence standard";
}else if ($prix1 == "69"){
	$licence1 = "Licence broadcasting";
}else if (
	$prix1 == "79"){
	$licence1 = "Licence reproduction 10 000 ex.";
}else if ($prix1 == "99"){
	$licence1 = "Licence reproduction illimitée";
        stripslashes($licence1);
}else if ($prix1 == "0"){
	$licence1 = "";
}


Mais ça ne marche pas non plus.
Comme le texte que génère "$licence" est contenu dans le php et n'est pas issu du flash, de même que les textes du genre "Jonathan LUSY\n
88A, Route de Saint-Rémy - Les Bagnardes\n
01310 - SAINT-REMY\n\n
Dès réception de votre règlement, des identifiants vous\n
seront attribués afin d'accéder à votre espace privé\n

où vous pourrez télécharger les fichiers mp3 de votre commande.\n\n
Si vous souhaitez obtenir les fichiers aux formats aif, wave, ou autres,\n
répondez à cet e-mail en indiquant votre adresse postale.\n
et en précisant le ou les formats souhaités.\n\n"

Donc à priori le simple fait d'ajouter "decoder($licence)" devrait suffire, comme pour les autres textes définis dans le php et pas issu du flash ?

BBFUNK01
vendredi 15 janvier 2010 à 17:44:37 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

kohntark

Membre Club
Réponse acceptée !
Re,

Donc à priori le simple fait d'ajouter "decoder($licence)" devrait suffire, comme pour les autres textes définis dans le php et pas issu du flash ?



Ben non :
- ton script PHP est en ISO-8859-1
- Flash envoie probablement des données en UTF-8
- tu envoies ton mail en ISO-8859-1

=>
- tu appliques un utf8_decode sur tes données flash
UTF_8 == utf8_decode ==> ISO-8859-1
=> OK
- tu appliques un utf8_decode sur tes données PHP ($licence, ...)
ISO-8859-1 == utf8_decode ==> impossible,
d'où la suppression des accents and co

Je le répète, le mieux serait de passer tout en UTF8, ça t'éviterait bien des pbs et des traitements inutiles.
Si tu souhaites malgré tout rester comme ça vire le decoder() sur les variables issues de ton script.


Kohntark -

vendredi 15 janvier 2010 à 19:55:56 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

BBFUNK01

Re Kohntark,

je vais essayer en supprimant les "decoder" devant mes "($licence)", je t'avue que n'étant pas un expert en php si cette solution marche ça m'évitera de reprendre mon script trop longuement. Je te tiens au courant si ça marche.

Merci pour ton aide ! :)

BBFUNK01
vendredi 15 janvier 2010 à 20:29:38 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

BBFUNK01

Re,

et bien en supprimant les "decoder" devant mes "($licence)" ça marche !

Merci beaucoup et à plus.

BBFUNK01
vendredi 15 janvier 2010 à 20:47:25 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

kohntark

Membre Club
Pas de quoi, mais garde à l'esprit qu'harmoniser les encodages te facilitera les choses pour la suite.
N'oublies de valider une réponse afin de clôturer le thread.

Bonne continuation,



Kohntark -

vendredi 15 janvier 2010 à 23:17:16 | Re : Afficher les "é" dans un e-mail envoyé par formulaire

BBFUNK01

Réponse validée, merci pour tes conseils et bonne continuation à toi aussi.

A plus,

BBFUNK01


Cette discussion est classée dans : mail, decoder, prix, headers, euros


Répondre à ce message

Sujets en rapport avec ce message

pb avec la fonction MAIL() [ par coolboy78 ] bonjour,g un pb avec la fonction malvoici mon code :$email=ton@mail.com;$sujet="Projet Cible 2003";$message="Bonjour,\n";$message.="Mot de passe : lyc pourquoi le programme envoit pas de e-mail ??? [ par pyranhaz ] le programme ci-dessous fonctionne parfaitement avec une base de donnée php, mais sur mysql il ne m'envoit pas de e-mail avec les résultats... pourquo formulaie email [ par LiTtLeBuBu ] Bonjour, VOila jai fais un formail en php sur la base d'un code source qui est "formailplus" trouver sur internet et j'arrive a envoyer des emails Erreur dans formulaire : Parse error: parse error in /data/members/free/multimania/fr/v/a/l/vali103/htdocs/formulaire/formmail.php on line 357 [ par vali103 ] Bonjour,J'utilise Formmail+, j'ai mis les 2 fichier dans un dossier de mon serveur (Lycos Multimania avec PHP activé, fonction (mail) activé)J'ai auss mailer une page php [ par micholi ] Bonjour,j'utilise la fonction mail dans une page php pour envoyer un mail.  Voici mon script : $to = "email du destinataire" . ", " ;$subject = "Sujet Envoi d' un mail avec des $variable dans le message [ par blibers ] Slt a tous ;)voila mon pb :je ne trouve pas de solutions pour pouvoir envoyer un message mail avec des variables dans le corp du message !je vous mets envoi mail html avec mail() [ par joebuz ] bonjour,je souhaiterais savoir comment faire pour definir l'expediteur (From),  faire une copie conforme cachée (Cc), et envoyé le tout au format html pb envoi mail groupé [ par joebuz ] Bonjour a tous,Voila c'est pour une newsletter, j'ai un formulaire avec un textarea ou je tape ma news puis envoyer.je vais chercher toutes les adress HTML envoyé par mail qui marche pas [ par JeanMi66 ] Bonjour à tous ! Voilà, j'ai une page PHP ou je sélectionne sur mon ordinateur le fichier HTML que je veux envoyer à une adresse. Ce fichier est trai Problème d'affichage d'HEADERS avec mail(); [ par JeanMi66 ] Bonjour à tous !j'utilise la fonction mail() pour envoyer un mail au format HTML. Je suis allé sur le site officiel de PHP pour voir comment s'écrivai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 6,271 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales