begin process at 2012 05 28 07:39:48
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Les accents s'affichent en caractère Spéciaux


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

Les accents s'affichent en caractère Spéciaux

vendredi 19 août 2011 à 15:39:40 | Les accents s'affichent en caractère Spéciaux

amrani83500

Bonjour à tous

je viens sur ce forum pour demander une aide , j'ai un script en php qui me permet de récupérer des variables dans un formulaire en HTML, et ce script et envoyé par mail.

Tous fonctionne correctement , sauf que lorsque je reçois un formulaire et qu'il y a un accent et bien dans le corps de mon message chaque accent est remplacé par î

Et voici le script :

<?php

header('content-type: text/html; charset: utf-8');
/*
********************************************************************************************
CONFIGURATION
********************************************************************************************
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'contact@monmail.fr';

// copie ? (envoie une copie au visiteur)
$copie = 'non'; // 'oui' ou 'non'

// Messages de confirmation du mail
$message_envoye = "<center>Votre demande de devis nous est bien parvenue, nous nous engageons à vous transmettre votre étude personnalisée sous 48 heures Cliquez <a href=\"index.html\">ici</a> pour retourner sur le site .</center>";
$message_non_envoye = "L'envoi du devis a échoué, veuillez réessayer SVP.";

// Messages d'erreur du formulaire
$message_erreur_formulaire = "Vous devez d'abord <a href=\"devis.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
********************************************************************************************
FIN DE LA CONFIGURATION
********************************************************************************************
*/

// on teste si le formulaire a été soumis
if (!isset($_POST['envoi']))
{
// formulaire non envoyé
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

// formulaire envoyé, on récupère tous les champs.

$offre = (isset($_POST['offre'])) ? Rec($_POST['offre']) : '';
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$birth = (isset($_POST['birth'])) ? Rec($_POST['birth']) : '';
$situation = (isset($_POST['situation'])) ? Rec($_POST['situation']) : '';
$regime = (isset($_POST['regime'])) ? Rec($_POST['regime']) : '';
$birth2 = (isset($_POST['birth2'])) ? Rec($_POST['birth2']) : '';
$regime2 = (isset($_POST['regime2'])) ? Rec($_POST['regime2']) : '';
$enfant = (isset($_POST['enfant'])) ? Rec($_POST['enfant']) : '';
$adresse1 = (isset($_POST['adresse1'])) ? Rec($_POST['adresse1']) : '';
$adresse2 = (isset($_POST['adresse2'])) ? Rec($_POST['adresse2']) : '';
$cp = (isset($_POST['cp'])) ? Rec($_POST['cp']) : '';
$ville = (isset($_POST['ville'])) ? Rec($_POST['ville']) : '';
$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$mut = (isset($_POST['mut'])) ? Rec($_POST['mut']) : '';
$effet = (isset($_POST['effet'])) ? Rec($_POST['effet']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = "Calculer mon devis";
$bes0 = (isset($_POST['bes'][0]));
$bes1 = (isset($_POST['bes'][1]));
$bes2 = (isset($_POST['bes'][2]));
$bes3 = (isset($_POST['bes'][3]));
$bes4 = (isset($_POST['bes'][4]));
$bes5 = (isset($_POST['bes'][5]));
$bes6 = (isset($_POST['bes'][6]));
$bes7 = (isset($_POST['bes'][7]));


$message = "
L'offre que je choisis : $offre
Mon nom est : $nom
Mon prénom est : $prenom
Ma date de naissance est : $birth
Mon adresse est : $adresse1 $adresse2
Mon code postal : $cp
Ma ville : $ville
Je suis : $situation
Nombre enfant : $enfant
Mon régime : $regime
Mon téléphone : $telephone
Mon email : $email
Avez vous déjà une mutuelle ? : $mut
La date de souscription souhaitée : $effet
Mes besoins : $bes[0] , $bes[1] ,$bes[2] ,$bes[3] ,$bes[4] ,$bes[5] ,$bes[6] ,$bes[7] .
La date de naissance de mon conjoint : $birth2
Régime de mon conjoint : $regime2 ";

// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré

if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail

$headers = 'Content-type: text/html; charset=UTF-8';


// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$message = str_replace("&#039;","'",$message);
$message = str_replace("&#8217;","'",$message);
$message = str_replace("&quot;",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("&lt;","<",$message);
$message = str_replace("&gt;",">",$message);
$message = str_replace("&amp;","&",$message);
$message = str_replace("&agrave;","à",$message);
$message = str_replace("&egrave;","è",$message);
$message = str_replace("&eacute;","é",$message);
$message = str_replace("&ecirc;","ê",$message);

// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="devis.html">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>


Merci à tous

vendredi 19 août 2011 à 18:41:25 | Re : Les accents s'affichent en caractère Spéciaux

Bxapero

Lut,
pourquoi ?

ceci
Code PHP :
/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};


et ceci :
Code PHP :
// Remplacement de certains caractères spéciaux
$message = str_replace("&#039;","'",$message);
$message = str_replace("&#8217;","'",$message);
$message = str_replace("&quot;",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("&lt;","<",$message);
$message = str_replace("&gt;",">",$message);
$message = str_replace("&amp;","&",$message);
$message = str_replace("&agrave;","à",$message);
$message = str_replace("&egrave;","è",$message);
$message = str_replace("&eacute;","é",$message);
$message = str_replace("&ecirc;","ê",$message); 


ensuite pourquoi ceci :
Code PHP :
header('content-type: text/html; charset: utf-8'); 


au lieu de :
Code PHP :
header('content-type: text/html; charset=ISO-8859-1'); 

vendredi 19 août 2011 à 21:21:53 | Re : Les accents s'affichent en caractère Spéciaux

cod57

bonsoir


comme le remarque Bxapero
header('content-type: text/html; charset=ISO-8859-1');
il aurait été bien de poster le formulaire pour voir le charset qui lui doit être iso-8859-1 ou iso-8851-2 d'ou le conflit ... et si le ne l'ai pas il faut voir comment tu sauves tes fichiers depuis l'éditeur utf8, ascii, ...





Bonne programmation !
samedi 20 août 2011 à 00:30:11 | Re : Les accents s'affichent en caractère Spéciaux

ghuysmans99

Membre Club
Réponse acceptée !
Ces deux caractères spéciaux signifient que le navigateur a envoyé les données en UTF8. Normal vu la première ligne de ton script. Tu dois ajouter ce header à ton mail pour que ton client mail sache que c'est de l'UTF8 : "Content-type: text/html; charset=utf-8\r\n"

D'autre part, je ne vois vraiment pas l'intérêt de passer les chaines dans stripslashes (vu qu'elles ne sont pas insérées dans une BDD) ...

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
lundi 22 août 2011 à 09:08:35 | Re : Les accents s'affichent en caractère Spéciaux

amrani83500

Merci à vous tous pour vos réponses , je vais essayer avec le charset que vous m'avez dis.
Merci encore
lundi 22 août 2011 à 14:07:35 | Re : Les accents s'affichent en caractère Spéciaux

amrani83500

Salut à tous

j'ai mis en dans mon script : header('content-type: text/html; charset=ISO-8859-1')

mais ce n'est pas mieux , c'est toujours pareille.

ma page qui contient le formulaire a cette méta.

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">, donc sur mon script php ,je dois le laisser en UTF-8

J'ai essayé de mettre sur la page ou se trouve le formulaire et ainsi que mon script php ça :

charset=ISO-8859-1
puis charset=ISO-8851-2

Ma page n'affichait plus les accents.

Merci pour votre aide
lundi 22 août 2011 à 14:35:17 | Re : Les accents s'affichent en caractère Spéciaux

cod57

bonjour

as tu verifié ton éditeur de code
es tu en mode ansi,utf8,iso-8859-2 ...

++

Bonne programmation !
lundi 22 août 2011 à 15:58:13 | Re : Les accents s'affichent en caractère Spéciaux

amrani83500

je viens de regarder et je suis en ANSI , dois je apporter des modifications à mon code ?
lundi 22 août 2011 à 17:02:30 | Re : Les accents s'affichent en caractère Spéciaux

ghuysmans99

Membre Club
Tout (BDD, script PHP/HTML/CSS, mail) doit être encodé de la même façon, sinon plus personne ne s'y retrouve. UTF-8 est conseillé pour les sites multilingues, mais si tu n'as que du français (et/ou des langues utilisant seulement l'alphabet latin) l'ISO-8859-1 suffit.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
lundi 22 août 2011 à 17:52:04 | Re : Les accents s'affichent en caractère Spéciaux

amrani83500

Merci à vous tous, mon soucis venait bien de mon notepad+++ qui utilisé l'encodage ANSi après conversion en UTF-8 , tout est rentré dans l'ordre.

Merci sans vous je n'y serais pas arriver


Cette discussion est classée dans : message, email, post, rec, isset


Répondre à ce message

Sujets en rapport avec ce message

envoie de donnees d un formulaire par mail [ par artemiscel ] Bonjour,je debute en php, j'ai essaye de faire une page permettant aux visiteurs d'envoyer un mail avec toutes les informations qu il doit faire parve problème formulaire de contac [ par seldgine ] bonjour,j'aurai besoin de votre aide svp!!voilà j'ai créé un formulaire de contact en html et css puis en php sur une autre page.En se qui concerne le Rajouté des fichiers joints avec l'envoi d'un Email. [ par dypsis66 ] Bonjour à tous! Je suis une novice en php et je suis en train de créer pour une entreprise un site internet. J'ai creer un formulaire de contact ou le caracteres speciaux pour mail [ par tonydanza ] Bonjour a tous!J essaye de resoudre un petit probleme (banal)pour l envoie d un mail j ai besoin de connaitre comment on faitpour convertir les caract mail bizzard [ par tonydanza ] Bonjour a tous!voila moi ma tasse de thé c est le flah... et le php je galere plutot.alors en ce moment j utilise un formulaire pour envoyer mes mail mail en email [ par tonydanza ] Bonjour a tous.voila mon probleme, j utilise la fonction mail pour envoyer des message et tout fonctionne tres bien normalement.mais la je viens de ch probleme recuperation d'info dans un champ quand il ya des caracteres < ou > [ par pascalpinhas ] Bonjour,j'ai fait un formulaire pour un qcm a des etudiants.Dans une question posée avec une reponse libre concernant du code html dans un champ lorsq mail() [ par soussan ] j'envoie des informations depuis un formulaire  flash vers une adresse email  et j'utilise le code suivant :le prob c que lorque les informations arri Problème de formulaire mail :( [ par L42RY ] Bonjour à tous ! Tout d'abord, merci d'avoir pris le temps de cliquer sur mon post. J'ai créé ce dernier car j'ai un petit problème avec un formulaire Formulaire mail [ par L42RY ] Bonjour à tous ! Merci d'avoir cliqué sur mon topic, car je suis dans la mouise xD. Mon problème vient de ce formulaire mail que j'ai récupéré sur le


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 : 1,669 sec (4)

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