false, 'error' => 'Méthode non autorisée']); exit; } $input = json_decode(file_get_contents('php://input'), true); if (!$input) { http_response_code(400); echo json_encode(['success' => false, 'error' => 'Données invalides']); exit; } try { if (!verifyCsrfToken($input['csrf_token'] ?? '')) { throw new Exception('Token de sécurité invalide. Veuillez rafraîchir la page.'); } $recaptchaScore = verifyRecaptcha($input['recaptcha_token'] ?? ''); if ($recaptchaScore < RECAPTCHA_THRESHOLD) { error_log("reCAPTCHA score trop bas: {$recaptchaScore}"); throw new Exception('Vérification anti-spam échouée. Veuillez réessayer.'); } $data = validateContactData($input); $sent = sendContactEmail($data); if (!$sent) { throw new Exception('Erreur lors de l\'envoi du message. Veuillez réessayer plus tard.'); } echo json_encode([ 'success' => true, 'message' => 'Votre message a bien été envoyé ! Je vous répondrai dans les meilleurs délais.' ]); } catch (Exception $e) { http_response_code(400); echo json_encode([ 'success' => false, 'error' => $e->getMessage() ]); }