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

Résolu
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 15 janv. 2010 à 00:29
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 - 15 janv. 2010 à 23:17
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 :
<?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

7 réponses

kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 janv. 2010 à 17:44
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 -
3
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 janv. 2010 à 06:06
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 -
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
15 janv. 2010 à 11:38
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 :
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
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
15 janv. 2010 à 19:55
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
15 janv. 2010 à 20:29
Re,

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

Merci beaucoup et à plus.

BBFUNK01
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
15 janv. 2010 à 20:47
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 -
0
BBFUNK01 Messages postés 1310 Date d'inscription jeudi 16 juillet 2009 Statut Membre Dernière intervention 20 juin 2014 6
15 janv. 2010 à 23:17
Réponse validée, merci pour tes conseils et bonne continuation à toi aussi.

A plus,

BBFUNK01
0
Rejoignez-nous