Afficher les "é" dans un e-mail envoyé par formulaire [Résolu]

Signaler
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
-
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

Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
3708
Date d'inscription
lundi 5 juillet 2004
Statut
Membre
Dernière intervention
27 avril 2012
30
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 -
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
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
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
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
Messages postés
1313
Date d'inscription
jeudi 16 juillet 2009
Statut
Membre
Dernière intervention
20 juin 2014
6
Re,

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

Merci beaucoup et à plus.

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

A plus,

BBFUNK01