Suivez les fils RSS
 

Des livres incontournables pour tout maîtriser

  • CSS avancées - vers HTML5 et CSS3
  • HTML5
  • CSS2
  • PHP5 avanc�
  • Memento MySQL
  • Memento CSS 3
  • Memento XHTML
  • WordPress 3 100% pratique
  • jQuery et jQuery UI
Auteur
dreadstock
#
Citer
Happiness is only real when sh
367 Posts
Bonjour à tous,
J'ai crée un formulaire de contact, mis je suis confronté à un petit problème d'encodage.
Quand je reçois le mail de mon formulaire et qu'il y a des é ou des à ou des ' , je me retrouve avec des caractères tout bizarre du style bérangé de la brioche ' Do'rée

J'ai essayé quelques techniques trouvé sur le net, mais en vain. Voici ci-dessous mon code :
//If there is no error, send the email
		if(!isset($hasError)) {

            $emailTo = ''. $current_user->user_email .'';
			$subject = 'Demande de reservation de '.$name;
			$sendCopy = trim($_POST['sendCopy']);
			$body = "\n\nDate d'arrivee: $datein\n\nDate de depart: $dateout\n\nNom: $name \n\nNombre de personnes: $people\n\nEmail: $email\n\nTelephone: $tel \n\nDemande: $comments";
			$headers = 'De : mon site <'.$emailTo.'>' . "\r\n" . 'Repondre a : ' . $email;
			
			mail($emailTo, $subject, $body, $headers);

			if($sendCopy == true) {
				$subject = 'Votre demande de reservation';
				$headers = 'De : <noreply@somedomain.com>';
				mail($email, $subject, $body, $headers);
			}

			$emailSent = true;



Autre question, quand je recois le mail, dans le nom qui apparait quand je recois le mail, le l'adresse mail est une adresse de mon serveur genre monsite@ovh-60plan.net , comment faire pour avoir le nom de mon site et quelle ligne modifier ?
Merci par avance pour votre précieuse aide ! bonne journée

^
spirou0069
#
Citer
33 Posts
Salut,

Je pense que le problème viens du codage du site (utf-8, ISO-8859-1,...)

Je dois avouez que j'ai le même problème et suis entrain de chercher la solutions depuis ce matin decu

Pour ma part je suis sur que tout le site est en utf-8 vérifie de ton côté, j'ai même forcé avec un .htaccess mais cela ne change rien decu Si je trouve une solution, je la posterai...)

Spirou

L'art est aisé, la critique facile....
Soyez indulgent ;-)

^
Boudha
#
Citer
18 Posts
Bonjour,

Si tu vois ce genre de caractère c'est que l'e-mail est encodé en UTF-8.

Essaie en remplaçant la ligne :
mail($emailTo, $subject, $body, $headers);


Par :
mail($emailTo, $subject, utf8_decode($body), $headers);

La fonction utf8_decode() décode la chaîne en argument et la convertit au format Western (ISO-8859-1).
Plus d'infos sur la fonction utf8_decode().
Modifié par Boudha (06 Feb 2012 - 18:23)

^
dreadstock
#
Citer
Happiness is only real when sh
367 Posts
Boudha a écrit :
Bonjour,

Si tu vois ce genre de caractère c'est que l'e-mail est encodé en UTF-8.

Essaie en remplaçant la ligne :
mail($emailTo, $subject, $body, $headers);


Par :
mail($emailTo, $subject, utf8_decode($body), $headers);

La fonction utf8_decode() décode la chaîne en argument et la convertit au format Western (ISO-8859-1).
Plus d'infos sur la fonction utf8_decode().


J'ai fait ca et ca marche
$body = "Nom: ".utf8_decode($name)." \n\nEmail: ".utf8_decode($email)."\n\nDemande: ".utf8_decode($comments)."";


Mais ta solution qui doit aussi fonctionner est plus simple ! merci

^
spirou0069
#
Citer
33 Posts
Bonsoir,
Merci je dirais même mieux milles merci à boudha car ça fais des heures que j'essayais 50 façons de régler ce problème.
Commençons par le commencement...
Voici mon code (cela peux éventuellement servir à qqu ...) pris sur le site http://www.6ma.fr (Image de sécurité et code pour le formulaire du moins la base)

<?php 

// On initialise la session
session_start();
/* on vérifie que la code est toujours mémorisé en session et qu'il fait 6 caractères */
if(!isset($_SESSION['code']) || strlen($_SESSION['code']) != 6) die("Erreur !");

// on vérifie que la code entré est valide
if($_SESSION['code'] != $_POST['verif']) die('<script>window.location.replace("http://www.monsite.be/erreurcode.php");</script>');


if(isset($_POST) && isset($_POST['nom']) && isset($_POST['prenom']) && isset($_POST['email']) && isset($_POST['telephone']) && isset($_POST['infos']))

{
	extract($_POST);
    echo $text;
   if(!empty($nom) && !empty($prenom) && !empty($email) && !empty($telephone) && !empty($infos)){
		$message=str_replace("\'","'",$message);
		$destinataire="xxxxxxx@xxxx.be";
		$sujet="Formulaire de contact";
		$message="Une nouvelle question est arrivée \n
		Nom du preneur : $nom \n
		Prenom : $prenom \n
		Email : $email \n
		Telephone : $telephone \n";
		Message : $infos";
		
		$entete="From: $nom \n Reply-To: $email";
		mail($destinataire,$sujet,$message,$entete);
        header("Location:merci.php");
   }
   else{ 
		
        header("Location:erreur.php");
		  
   }
}
// on détruit les variables de session, désormais inutiles
session_unset();
session_destroy();
?>



Pour ce qui me concerne, j'ai modifier la ligne .
mail($destinataire,$sujet,$message,$entete);

par
mail($destinataire,$sujet,$message,utf8_decode($infos),$entete);


Et j'ai bien sur 2 fois le message qui apparaissais.... j'ai donc supprimer la ligne
Message : $infos";


Ce qui fais maintenant le message propre et sans tous ses accents biggol

Juste une petite question comme cela ce sera nickel pour moi, J'aurais aimé que le message arrive après les champs email, nom etc... et pas avant comme pour le moment confus

Dernière petite précision j'ai enregistrer ma page en ISO et pas UTF-8
Je ne cherche pas à comprendre confus

Merci pour l'aide cligne
Spirou

L'art est aisé, la critique facile....
Soyez indulgent ;-)

^