BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 2014
-
15 janv. 2010 à 00:29
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 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
A voir également:
Afficher les "é" dans un e-mail envoyé par formulaire
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 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.
BBFUNK01
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 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
Messages postés1310Date d'inscriptionjeudi 16 juillet 2009StatutMembreDernière intervention20 juin 20146 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 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.