This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
header('Content-Type: application/json; charset=utf-8');
|
||||
header('X-Content-Type-Options: nosniff');
|
||||
|
||||
// Autoriser uniquement les requêtes POST
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
http_response_code(405);
|
||||
echo json_encode(['success' => false, 'message' => 'Méthode non autorisée.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Protection anti-spam (honeypot)
|
||||
if (!empty($_POST['website'])) {
|
||||
http_response_code(400);
|
||||
echo json_encode(['success' => false, 'message' => 'Spam détecté.']);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Récupération et nettoyage des champs
|
||||
$nom = trim(strip_tags($_POST['nom'] ?? ''));
|
||||
$email = trim(strip_tags($_POST['email'] ?? ''));
|
||||
$message = trim(strip_tags($_POST['message'] ?? ''));
|
||||
|
||||
// Validation
|
||||
$errors = [];
|
||||
if (empty($nom)) $errors[] = 'Le nom est requis.';
|
||||
if (empty($email)) $errors[] = "L'adresse email est requise.";
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) $errors[] = "L'adresse email n'est pas valide.";
|
||||
if (empty($message)) $errors[] = 'Le message est requis.';
|
||||
if (strlen($message) > 5000) $errors[] = 'Le message est trop long (5000 caractères max).';
|
||||
|
||||
if (!empty($errors)) {
|
||||
http_response_code(422);
|
||||
echo json_encode(['success' => false, 'message' => implode(' ', $errors)]);
|
||||
exit;
|
||||
}
|
||||
|
||||
// Destinataire
|
||||
$to = 'contact@la-maison-de-cecile.fr';
|
||||
$subject = '=?UTF-8?B?' . base64_encode('[La Maison de Cécile] Message de ' . $nom) . '?=';
|
||||
|
||||
// Corps du mail
|
||||
$body = "Vous avez reçu un nouveau message via le formulaire de contact.\n\n";
|
||||
$body .= "Nom : {$nom}\n";
|
||||
$body .= "Email : {$email}\n";
|
||||
$body .= "Message:\n{$message}\n";
|
||||
|
||||
// En-têtes
|
||||
$headers = "From: =?UTF-8?B?" . base64_encode($nom) . "?= <no-reply@la-maison-de-cecile.fr>\r\n";
|
||||
$headers .= "Reply-To: {$email}\r\n";
|
||||
$headers .= "MIME-Version: 1.0\r\n";
|
||||
$headers .= "Content-Type: text/plain; charset=UTF-8\r\n";
|
||||
$headers .= "Content-Transfer-Encoding: base64\r\n";
|
||||
|
||||
$success = mail($to, $subject, base64_encode($body), $headers);
|
||||
|
||||
if ($success) {
|
||||
echo json_encode(['success' => true, 'message' => 'Votre message a bien été envoyé. Nous vous répondrons sous 24h.']);
|
||||
} else {
|
||||
http_response_code(500);
|
||||
echo json_encode(['success' => false, 'message' => "Une erreur s'est produite. Veuillez réessayer ou nous contacter par téléphone."]);
|
||||
}
|
||||
Reference in New Issue
Block a user