Bonjour
J'utilise un formulaire d'envoi de mail créé avec flash MX (dont l'encodage est fixé en UTF8), et un fichier php pour traiter les données et les envoyer...
Etant donné que l'on ne peut pas changer l'encodage des formulaires en flash, je cherche à convertir le contenu du formulaire avant d'envoyer le mail...
J'ai lu sur Alsacreation qu'on pouvait utiliser la fonction decode_utf8() pour convertir de UTF8 en ISO : http://forum.alsacreations.com/topic.php?fid=17&tid=41818&s=outlook+2007+utf

Je ne sais pas trop comment utiliser cette fonction, est ce que qqun aurait un petit script fonctionnel à insérer dans ma page php ?

Le code php qui me permet d'envoyer le contenu de mes formulaires (apres avoir vérifié, le remplissage) :

<?
/***********************************************************
* Fonction pour vérifier la validite d'un mail             *
*    - on check la présence de caractères spéciaux         *
*    - on vérifie que le domaine ait un enregistrement DNS *
***********************************************************/
function check_email_mx($email)
{
        if( (preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',$email)) )
        {
                $host = explode('@', $email);
                if(checkdnsrr($host[1].'.', 'MX') ) return true;
                if(checkdnsrr($host[1].'.', 'A') ) return true;
                if(checkdnsrr($host[1].'.', 'CNAME') ) return true;
        }
        return false;
}
 
/***********************************************************************
* Verification des champs du mail                                      *
*    - on check la présence champs multi-lignes                        *
*    - cf :  http://www.phpsecure.info/v2/article/MailHeadersInject.php  *
***********************************************************************/
function verify($champ)
{
        if (eregi("\r",$champ) || eregi("\n",$champ)){
                return true;
        }
        return false;
}
 
/*************************************************************************
* Gestion des erreurs                                                    *
*    - appel aux fonctions précédentes et définition du message d'erreur *
*************************************************************************/
//Gestion des erreurs
if (($_POST['nom'] == null) || ($_POST['message'] == null) || ($_POST['de'] == null))
        $erreur = "<strong>Veuillez renseigner tout les champs</strong>";
 
if (!check_email_mx($_POST['de']))
        $erreur = "<strong>Adresse email invalide</strong>";
 
if (verify($_POST['de']))
        $erreur = "<strong>Les champs multi-lignes sont interdits</strong>";
?>
 
<html>
<head>
<title>Formulaire en ligne</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style type="text/css">
<!--
body,td,th {
	color: #FFFFFF;
	font-family: Arial, Helvetica, sans-serif;
	font-size: 12px;
}
a:link {
	color: #FFFFFF;
}
a:visited {
	color: #FFFFFF;
}
a:hover {
	color: #FFFFFF;
}
a:active {
	color: #FFFFFF;
}
body {
	background-color: #000000;
	margin-top: 10px;
	margin-bottom: 10px;
}
-->
</style></head>
<body>
<div align="center"><strong>Formulaire en ligne</strong><br><br>
  <?
if (isset($erreur))
        echo $erreur;
else {

// Envoi du mail, après avoir vérifié la sécurité de chaque champs
if (mail("email@monemail.com","Formulaire en ligne","Nom : $_POST[nom]\n De : $_POST[de]\n Message : $_POST[message]\n","From: ".$_POST['de']."\n"));
echo "Votre message a été envoyé.<br>
Merci d'avoir pensé à nous,<br>
nous allons vous répondre<br>
dans les plus brefs délais.";
}
?>
  <br>
  <br><a href="javascript:history.back()"><strong>Retour</strong></a></div>
</body>
</html>

Et l'archive zip qui contient le jeu de fichiers de mon formulaire (.fla + .php): http://www.pixelblog.org/formulaire.zip
Modifié par fced (22 Jun 2010 - 20:45)
Bonjour
J'ai pu résoudre mon problème et donc transformer les contenus des champs de mon formulaire en flash de UTF8 vers ISO grace à ce post :
http://www.phpcs.com/forum/sujet-GLOBALS-UTF8_DECODE_423456.aspx
et ce petit bout de code php :
$_POST = array_map('utf8_decode', $_POST);
Merci JOJO Smiley smile

<?
$_POST = array_map('utf8_decode', $_POST);
mail("mail@monemail.com","Formulaire en ligne","Nom : $_POST Smiley nom \n De : $_POST Smiley de \n Message : $_POST Smiley message \n","From: ".$_POST['de']."\n");
echo "Votre message a été envoyé.";
?>