no save
Assistance
Achat
News

Forum | webmastering
Accents et Charset dans formulaire PHP
lT4_, le lun. 13 avr. 2009 à 23:21:02
Bonjour,

J'ai vraiment besoin d'aide sur un soucis d'accents dans un formulaire de contact en PHP.
Je m'explique :
Je fais un site internet pour un ami, et dans la page de contact j'utilise un formulaire dans lequel je récupère des données comme le nom, la société, l'email et le message du visiteur.
J'utilise un charset utf-8 pour ma page, mais un ISO-8859-1 dans l'entête du message. Le soucis : je ne comprends vraiment pas pourquoi mes accents ne sont pas pris en compte et pourquoi je vois des \n \r au lieu de retours chariots...
De l'ordre général, quelles sont les fonctions (et dans quel ordre) et charset à adopter dans toutes les situations? J'aimerais avoir un code sur lequel je pourrais me baser pour mes prochains formulaires... Merci de votre aide !

Voici mon code :


<?php include_once("include/connexion_bdd.php"); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="icon" type="image/x-icon" href="images/favicon.ico" />
<title>Mon site - Contact</title>
</head>

<body>

<div id="corps">

<?php $page = 6;
include('include/header.php');
?>


<div id="corps_contenu">

<div id="bloc_formulaire"><br />
<center><h4>Formulaire de contact</h4></center>

<?php

// Inclusion de la fonction de vérification de mail.
include("fonctions.php");

// Définition des variables dans le mail.
$nom = utf8_decode(mysql_real_escape_string(htmlspecialchars($_POST['nom'])));
if(isset($_POST['envoyer']))
{ if(isset($_POST['societe']))
$societe = utf8_decode(mysql_real_escape_string(htmlspecialchars($_POST['societe'])));
else
$societe = "Inconnue";
}
$email = utf8_decode(mysql_real_escape_string(htmlspecialchars($_POST['email'])));
$objet = utf8_decode(mysql_real_escape_string(htmlspecialchars($_POST['objet'])));
$message_envoi = nl2br(utf8_decode(mysql_real_escape_string(htmlspecialchars($_POST['message_envoi']))));


// Création des headers !
$headers ='From: "'.$nom.'"<'.$email.'>'."\n";
$headers .='Reply-To: '.$email.''."\n";
$headers .= 'Mime-Version: 1.0'."\r\n";
$headers .='Content-type: text/html; charset=ISO-8859-1'."\r\n";
$headers .= "\r\n";



// Vérification formulaire bien rempli !
if(isset($_POST['envoyer']))
{
if( (empty($nom) || empty($email) || empty($objet) || empty($message_envoi)))
$verif = 1;

elseif(strlen($message_envoi) <= 20)
$verif = 2;

elseif (verif_mail($email) == false)
$verif = 3;

elseif ($_SERVER["HTTP_REFERER"] != "contact.php" || strstr($nom, "http://") || strstr($societe, "http://") || strstr($email, "http://") || strstr($objet, "http://") || strstr($message_envoi, "http://") )
$verif = 4; // Sécurité...

elseif((!empty($nom) || !empty($email) || !empty($objet) || !empty($message_envoi)))
$verif = 5;


switch ($verif)
{
case 1 : $message_erreur = "<span class='msg_erreur'>Vous devez remplir tous les champs !</span>"; break;
case 2 : $message_erreur = "<span class='msg_erreur'>Votre message doit faire au moins 20 caract&egrave;res.</span>"; break;
case 3 : $message_erreur = "<span class='msg_erreur'>Votre adresse mail est invalide !</span>"; break;
case 4 : $message_erreur = "<span class='msg_erreur'>Par mesure de sécurité, l'envoi est impossible...</span>"; break;

// Tout est correct, ENVOI DU MAIL !!
case 5 : $message_final = "Monsieur ".$nom.", entreprise ".$societe.", vous a laiss&eacute; un message :\n".$message_envoi;
$succes_envoi = 1;

if(mail('monmail', $objet, $message_final, $headers))
$message_erreur = "<br /><span class='msg_succes'>Votre message &agrave; bien &eacute;t&eacute; envoy&eacute;. Nous vous recontacterons dans les plus brefs d&eacute;lais.<br />L'&eacute;quipe.</span>";
else
$message_erreur = "<br /><span class='msg_erreur'>Erreur lors de l'envoi du mail. Veuillez réessayer ultérieurement.</span>";
break;

}
}

?>


<form action="" method="post" name="formulaire_contact">

<?php if($succes_envoi == 1) echo $message_erreur.'<br /><br />';
else {
?>

<?php if(isset($message_erreur))
echo $message_erreur.'<br /><br />';
?>

<br /><label for="nom">Votre nom :</label>
<input type="text" name="nom" id="nom" maxlength="30" <?php echo "value='".$nom."'"; ?> /><br />

<label for="societe">Soci&eacute;t&eacute; (Facultatif) :</label>
<input type="text" name="societe" id="societe" maxlength="30" <?php echo "value='".$societe."'"; ?> /><br />

<label for="email">Adresse Email :</label>
<input type="text" name="email" id="email" maxlength="30" <?php echo "value='".$email."'"; ?> /><br /><br />

<label for="objet">Objet :</label>
<input type="text" name="objet" id="objet" maxlength="30" <?php echo "value='".$objet."'"; ?> /><br />

<label for="message_envoi">Votre message :</label>
<textarea name="message_envoi" id="message_envoi" rows="" cols="" ><?php echo $message_envoi; ?></textarea><br /><br />


<label for="submit">Valider :</label>
<input type="submit" name="envoyer" value="Envoyer mon message" id="submit" />

<?php
}
?>

</form>
</div>

</div>


<div id="right">
<h3>Contactez le groupe </h3>

<p> <!-- Texte intro au formulaire de contact! -->
<?php $req_contact = mysql_query("SELECT texte FROM contact LIMIT 0,1");
while($contact = mysql_fetch_array($req_contact) )
{ echo nl2br($contact['texte']); }
?>
</p>
</div>


<?php include("include/footer.php"); ?>



</div> <!-- Corps-->


<div class="space"></div> <!-- Correspond à l'espace de fin de page -->


</body>
</html>
Configuration: Windows Vista
Firefox 3.0.8


IpIpIpIpOne
13 avr.
Suivant
REPONSES
IpIpIpIpOne
13 avr.
lT4_
14 avr.
lT4_
14 avr.
lT4_
14 avr.
lT4_
15 avr.
patachon
15 avr.
lT4_
15 avr.
Version Web
Réalisé par RedShift
no save