Formulaire contact - Caractères spéciaux

Résolu
ronisonmez Messages postés 10 Date d'inscription   Statut Membre Dernière intervention   -  
animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis nouveau sur le site et j'ai un problème à régler.
Enfaite quand je remplis mon formulaire contact, lors de la réception des réponses du formulaire, les caractères spéciaux ne s'affichent pas correctement.

Je sais pas comment faire, j'ai jeté un coup d'oeil sur les plusieurs sites et j'ai fais qq'essaie mais ça marche toujours pas.

Vous pouvez m'aider SVP?
Merci d'avance

Voici mon code code PHP:

<?php 

/* 
|-------------------------------------------------------------------------- 
| Settings 
|--------------------------------------------------------------------------
/



define("EMAIL" , "xxxx@gmail.com"); 
define("SUBJECT" , "Demande d'information"); 

define("NAME_MSG" , "Merci de saisir votre nom"); 
define("EMAIL_MSG" , "Merci de saisir votre email"); 
define("EMAIL_WRONG" , "Merci de saisir une adresse email valide"); 
define("PHONE_MSG" , "Merci de saisir votre numéro de téléphone"); 
define("MESSAGE_MSG" , "Merci de saisir votre message"); 

/* 
|-------------------------------------------------------------------------- 
| Simple Sender Script 
|--------------------------------------------------------------------------
/


if( $_POST ) { 

/* check mandatory fields */ 
if( empty( $_POST['name'] ) ) { 
exit( NAME_MSG ); 
} 

if( empty( $_POST['email'] ) ) { 
exit( EMAIL_MSG ); 
} 

if( empty( $_POST['phone'] ) ) { 
exit( PHONE_MSG ); 
} 

if( empty( $_POST['message'] ) ) { 
exit( MESSAGE_MSG ); 
} 

/* validate email */ 
if ( !empty( $_POST['email']) && !preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/', $_POST['email'])) { 

exit( EMAIL_WRONG ); 

} 

/* create body message */ 
$message = ''; 

// Name 
$message.= 'Nom : ' . $_POST['name'] . ''; 

// Phone 
$message.= 'Téléphone : ' . $_POST['phone'] . ''; 

// Message 
$message.= 'Message : ' . $_POST['message'] . ''; 


/* send email */ 
$email = mail( EMAIL , SUBJECT , $message , "From: ".$_POST['name']." <".$_POST['email'].">\r\n" ."Reply-To: ".$_POST['email']."\r\n" ); 

/* callback for ajax */ 
if( $email ) { 
echo 'OK'; 
} else { 
echo 'ERROR'; } 
} 

?>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   738
 
salut

le problème vient de ce que tu n'a pas mis le header

Content-Type: text/html; charset="utf-8"'."\n";
si ton site est en utf-8

ou

Content-Type: text/html; charset=\"iso-8859-1\";
si ton site est en iso-8859-1

voir aussi la fonction php htmlentities qui converti les caractères spéciaux d'une chaine en entitées html
http://www.lephpfacile.com/manuel-php/function.htmlentities.php

N'oublie pas non plus fonction php stripslash() qui retire les anti slash d'échappement

et la fonction trim() a utiliser sur l'email (trim enlève les espaces en début et fin de chaine)

voila un peu de doc
https://a-pellegrini.developpez.com/tutoriels/php/mail/



Un petit merci vaut mieux qu'une grande ignorance !
Donc si votre sujet est résolu une réponse avec merci c'est pas de refus.
0
ronisonmez Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse animostab.
Enfaîte mon site est en HTML5. Je sais pas il faut où insérer le code "Content-Type: text/html; charset="utf-8"'."\n"; "

Tu peux dire où il faut exactement il faut l’intégrer ?
0
animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   738
 
apres ."Reply-To: ".$_POST['email']."\r\n"

va voir le lien que j'ai mis "un peu de doc"
en fait tu devrais mettre tes headers en variable comme tu l'as fait avec $message
ce serait mieux

un exemple

     $to = 'tonemail@tonsite.com';
     $email_expediteur = $email; //mail expediateur
     $subject = 'formulaire'; //sujet du message
     $name = trim($_POST['name']);
  
     $headers = 'From: "'.$name.'" <'.$email.'>'."\n";
     $headers .= 'Return-Path: <'.$email.'>'."\n";
     $headers .= 'MIME-Version: 1.0'."\n";
     $headers .='Content-Type: text/html; charset="utf-8"'."\n"; 

  //ici tes variables $message

     mail($to, $subject, $message, $headers);


voila en gros
0
ronisonmez Messages postés 10 Date d'inscription   Statut Membre Dernière intervention  
 
ça marche :)
Mille mercis
0
animostab Messages postés 2829 Date d'inscription   Statut Membre Dernière intervention   738
 
Ok @+
0