63 lines
2.3 KiB
PHP
63 lines
2.3 KiB
PHP
<?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."]);
|
|
}
|