Bonjour à tous,
C'est mon premier message sur les forums d'Alsacréations et j'espère pouvoir y trouver de l'aide.
J'ai récupéré et adapter le code d'un formulaire mais qui me pose un problème au niveau des caractères puisque des accents contenus dans le champ "Nom" bloque l'envoi du mail.
Le filtre FILTER_SANITIZE_STRING est bien en place mais il ne permet pas de traiter les accents.
Je n'ai pas vu non plus d'autres filtres qui permettent de le faire.
Pour garder de la souplesse pour les utilisateurs, j'aimerai que les caractères avec accents soient remplacés par le caractère directement et ce, avant l'envoi du formulaire.
Le code en question :
Et le script Ajax au besoin :
Cela doit forcément passer par une fonction php mais je ne suis pas capable de l'écrire ni de l'insérer correctement dans mon code d'origine.
Merci d'avance.
C'est mon premier message sur les forums d'Alsacréations et j'espère pouvoir y trouver de l'aide.
J'ai récupéré et adapter le code d'un formulaire mais qui me pose un problème au niveau des caractères puisque des accents contenus dans le champ "Nom" bloque l'envoi du mail.
Le filtre FILTER_SANITIZE_STRING est bien en place mais il ne permet pas de traiter les accents.
Je n'ai pas vu non plus d'autres filtres qui permettent de le faire.
Pour garder de la souplesse pour les utilisateurs, j'aimerai que les caractères avec accents soient remplacés par le caractère directement et ce, avant l'envoi du formulaire.
Le code en question :
<?php
if($_POST)
{
require('constant.php');
$user_name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
$user_email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
$user_phone = filter_var($_POST["phone"], FILTER_SANITIZE_STRING);
$content = filter_var($_POST["content"], FILTER_SANITIZE_STRING);
if(empty($user_name)) {
$empty[] = "<b>Nom</b>";
}
if(empty($user_email)) {
$empty[] = "<b>Email</b>";
}
if(empty($user_phone)) {
$empty[] = "<b>Sujet</b>";
}
if(empty($content)) {
$empty[] = "<b>Message</b>";
}
if(!empty($empty)) {
$output = json_encode(array('type'=>'error', 'text' => implode(", ",$empty) . ' <b>manquant(s)</b>'));
die($output);
}
if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)){ //email validation
$output = json_encode(array('type'=>'error', 'text' => '<b>'.$user_email.'</b> est un e-mail non valide. Merci de le corriger.'));
die($output);
}
//reCAPTCHA validation
if (isset($_POST['g-recaptcha-response'])) {
require('component/recaptcha/src/autoload.php');
$recaptcha = new \ReCaptcha\ReCaptcha(SECRET_KEY, new \ReCaptcha\RequestMethod\SocketPost());
$resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
if (!$resp->isSuccess()) {
$output = json_encode(array('type'=>'error', 'text' => '<b>Alerte Captcha : Validation nécessaire !</b> '));
die($output);
}
}
$toEmail = "contact@locationsaintcoulomb.fr";
$mailHeaders = "From : " . $user_name . "<" . $user_email . ">\r\n";
$mailBody = "Nom : " . $user_name . "\n";
$mailBody .= "Email : " . $user_email . "\n";
$mailBody .= "Sujet : " . $user_phone . "\n";
$mailBody .= "Message : " . $content . "\n";
if (mail($toEmail, "Message de www.locationsaintcoulomb.fr", $mailBody, $mailHeaders)) {
$output = json_encode(array('type'=>'message', 'text' => 'Bonjour '.$user_name .', merci pour votre e-mail. Nous reviendrons vers vous dès que possible.'));
die($output);
} else {
$output = json_encode(array('type'=>'error', 'text' => 'Cet e-mail ne peut être envoyé. Merci de contacter'.SENDER_EMAIL));
die($output);
}
}
?>
Et le script Ajax au besoin :
$(document).ready(function (e){
$("#frmContact").on('submit',(function(e){
e.preventDefault();
$("#mail-status").hide();
$('#send-message').hide();
$('#loader-icon').show();
$.ajax({
url: "contact_check.php",
type: "POST",
dataType:'json',
data: {
"name":$('input[name="name"]').val(),
"email":$('input[name="email"]').val(),
"phone":$('input[name="phone"]').val(),
"content":$('textarea[name="content"]').val(),
"g-recaptcha-response":$('textarea[id="g-recaptcha-response"]').val()},
success: function(response){
$("#mail-status").show();
$('#loader-icon').hide();
if(response.type == "error") {
$('#send-message').show();
$("#mail-status").attr("class","error");
} else if(response.type == "message"){
$('#send-message').hide();
$("#mail-status").attr("class","success");
}
$("#mail-status").html(response.text);
},
error: function(){}
});
}));
});
Cela doit forcément passer par une fonction php mais je ne suis pas capable de l'écrire ni de l'insérer correctement dans mon code d'origine.
Merci d'avance.