Problème avec les caractères spéciaux lors de l'envoi d'un form

Résolu/Fermé
Signaler
Messages postés
10
Date d'inscription
mercredi 7 septembre 2016
Statut
Membre
Dernière intervention
2 avril 2021
-
Messages postés
10
Date d'inscription
mercredi 7 septembre 2016
Statut
Membre
Dernière intervention
2 avril 2021
-
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'; }
}

?>

1 réponse

Messages postés
196
Date d'inscription
mercredi 14 janvier 2015
Statut
Membre
Dernière intervention
2 octobre 2016
88
Ca doit venir de l'encodage.

Tu utilises bien utf-8 ?
Messages postés
10
Date d'inscription
mercredi 7 septembre 2016
Statut
Membre
Dernière intervention
2 avril 2021

tu veux dire dans le HTML ?
Voici le code HTML:

<!DOCTYPE html>
<html lang="fr">


<head>

<!-- Basic Page Needs
================================================== -->
<meta charset="utf-8">
<title>Brooklyn</title>
<meta name="description" content="">
<meta name="author" content="">
Messages postés
196
Date d'inscription
mercredi 14 janvier 2015
Statut
Membre
Dernière intervention
2 octobre 2016
88 >
Messages postés
10
Date d'inscription
mercredi 7 septembre 2016
Statut
Membre
Dernière intervention
2 avril 2021

Alors ? Ca venait d'ou en fin de compte ?
Messages postés
10
Date d'inscription
mercredi 7 septembre 2016
Statut
Membre
Dernière intervention
2 avril 2021
>
Messages postés
196
Date d'inscription
mercredi 14 janvier 2015
Statut
Membre
Dernière intervention
2 octobre 2016

en mettant ce code et ça marche :)

$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);