Je sais que le problème a été soulevé des milliers de fois.. mais je bloque. J'ai testé un script php. Il est encodé en utf-8. C'est pour envoyer un mail avec un captcha. Je ne l'ai pas inventé, je ne suis pas super bon en php encore.. la preuve, j'y arrive pas.
Voici le code :
Quand j'envois le mail, soit que les accents s'affiche bien ds le mail mais pas bien si le code captcha n'est pas bien entré... bref, il faudrait que qqn test pour voir les différents problèmes...
MERCI!!!!
Voici le code :
<?php
session_start();
$errors = '';
$name = '';
$visitor_email = '';
$user_message = '';
if(isset($_POST['submit']))
{
$name = $_POST['name'];
$visitor_email = $_POST['email'];
$user_message = $_POST['message'];
///------------Do Validations-------------
if(empty($name)||empty($visitor_email))
{
$errors .= "\n Name and Email are required fields. ";
}
if(IsInjected($visitor_email))
{
$errors .= "\n Bad email value!";
}
if(empty($_SESSION['6_letters_code'] ) ||
strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0)
{
//Note: the captcha code is compared case insensitively.
//if you want case sensitive match, update the check above to
// strcmp()
$errors .= "\n Oups! Mauvais code ... Veuillez inscrire les chiffres et les lettre dans le même ordre svp!";
}
if(empty($errors))
{
//send the email
$to = "monmail@monserveur";
$subject="AIDE ET SUPPORT / ";
$from = "de@moi.com";
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$body =
"Bonjour $name, voici les informations transmises\n\n".
"Nom: $name\n".
"Email: $visitor_email \n".
"Message: \n ".
"$user_message\n".
"IP: $ip\n";
$headers = "From: demoi@demoi.com \r\n";
$headers .= "Cc: $visitor_email \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
$headers .='Content-Type: text/html; charset="utf-8"'."\n";
$headers .='Content-Transfer-Encoding: 8bit';
mail($to, $subject, $body,$headers);
header('Location: thank-you.html');
}
}
// Function to validate against any email injection attempts
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
<!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>
<!-- define some style elements-->
<style>
label,a, body
{
font-family : Arial, Helvetica, sans-serif;
font-size : 12px;
}
.err
{
font-family : Verdana, Helvetica, sans-serif;
font-size : 12px;
color: red;
}
</style>
<!-- a helper script for vaidating the form-->
<script language="JavaScript" src="scripts/gen_validatorv31.js" type="text/javascript"></script>
</head>
<body>
<p>
<img src="../../images/formulaire.gif" width="300" height="50"></p>
<p>
<?php
if(!empty($errors)){
echo "<p class='err'>".nl2br($errors)."</p>";
}
?>
</p>
<div id='contact_form_errorloc' class='err'></div>
<form method="POST" name="contact_form"
action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>">
<p>
<label for='name'>Nom: </label><br>
<input type="text" name="name" value='<?php echo htmlentities($name) ?>'>
</p>
<p>
<label for='email'>Courriel: </label><br>
<input type="text" name="email" value='<?php echo htmlentities($visitor_email) ?>'>
</p>
<p>
<label for='message'>Message:</label> <br>
<textarea name="message" rows=8 cols=30><?php echo htmlentities($user_message) ?></textarea>
</p>
<p>
<img src="captcha_code_file.php?rand=<?php echo rand(); ?>" id='captchaimg' ><br>
<label for='message'>Entrez le code ci-haut :</label><br>
<input id="6_letters_code" name="6_letters_code" type="text"><br>
<small>Code illisible? Cliquez <a href='javascript: refreshCaptcha();'>ici</a> pour en obtenir un nouveau.</small></p>
<input type="submit" value="OK" name='submit'>
</form>
<script language="JavaScript">
// Code for validating the form
// Visit http://www.javascript-coder.com/html-form/javascript-form-validation.phtml
// for details
var frmvalidator = new Validator("contact_form");
//remove the following two lines if you like error message box popups
frmvalidator.EnableOnPageErrorDisplaySingleBox();
frmvalidator.EnableMsgsTogether();
frmvalidator.addValidation("name","req","Entrez votre nom svp");
frmvalidator.addValidation("email","req","Entrez votre adresse de courriel svp");
frmvalidator.addValidation("email","email","Format de courriel non valide. Merci de vérifier votre adresse");
</script>
<script language='JavaScript' type='text/javascript'>
function refreshCaptcha()
{
var img = document.images['captchaimg'];
img.src = img.src.substring(0,img.src.lastIndexOf("?"))+"?rand="+Math.random()*1000;
}
</script>
</body>
</html>
Quand j'envois le mail, soit que les accents s'affiche bien ds le mail mais pas bien si le code captcha n'est pas bien entré... bref, il faudrait que qqn test pour voir les différents problèmes...
MERCI!!!!