diff --git a/form.php b/form.php index 0b29aca..09aaed3 100644 --- a/form.php +++ b/form.php @@ -1,24 +1,34 @@ &1"; + exec($cmd, $output, $returnVar); + return $returnVar === 0; +} + +// Vérifier l'action soumise +$action = isset($_POST['action']) ? $_POST['action'] : ''; + // Générer ou récupérer la question antispam -if (!isset($_SESSION['current_question']) || isset($_POST['new_question'])) { - // Choisir une question aléatoire +if ($action === 'new_question' || !isset($_SESSION['current_question'])) { + // Choisir une nouvelle question aléatoire $questions_list = array_keys($txt['questions']); $current_question = $questions_list[array_rand($questions_list)]; $correct_answers = $txt['questions'][$current_question]; @@ -32,102 +42,77 @@ if (!isset($_SESSION['current_question']) || isset($_POST['new_question'])) { $correct_answers = $_SESSION['correct_answers']; } -// La partie PHP du formulaire -// Récuperation des valeurs en GET ou en POST -$try = isset($_GET['try']) ? $_GET['try'] : (isset($_POST['try']) ? $_POST['try'] : ''); -$nobotv = isset($_GET['nobotv']) ? $_GET['nobotv'] : (isset($_POST['nobotv']) ? $_POST['nobotv'] : ''); -$nobotc = isset($_GET['nobotc']) ? $_GET['nobotc'] : (isset($_POST['nobotc']) ? $_POST['nobotc'] : ''); -$nobots = isset($_GET['nobots']) ? $_GET['nobots'] : (isset($_POST['nobots']) ? $_POST['nobots'] : ''); - +// Vérification de l'envoi du formulaire +$try = isset($_POST['try']) ? $_POST['try'] : ''; +$nobotv = isset($_POST['nobotv']) ? $_POST['nobotv'] : ''; +$nobotc = isset($_POST['nobotc']) ? $_POST['nobotc'] : ''; +$nobots = isset($_POST['nobots']) ? $_POST['nobots'] : ''; $nobot = time() . '_' . rand(50000, 60000); -// Vérifier si la demande est pour une nouvelle question -if (isset($_POST['new_question'])) { - // Réinitialiser la question actuelle - $_SESSION['current_question'] = null; - $_SESSION['correct_answers'] = null; - // Rediriger pour éviter la soumission de formulaire inutile - header("Location: #answer"); - exit(); -} - -if ($try == 'send') { +if ($action === 'submit_form' && $try === 'send') { // Vérifier le token CSRF if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) { - echo ""; - echo $txt['csrf_error']; - echo ""; - return ; - exit(); + echo "" . $txt['csrf_error'] . ""; + return; } - // Ici Le visiteur soumet le formulaire - if (($nobotc != md5($nobotv)) || ($nobotv == '') || ($nobots != '')) { - echo ""; - echo $txt['antispam_error']; - echo ""; - return ; - } else { - if ($_SERVER["REQUEST_METHOD"] == "POST") { - $name = strip_tags(trim($_POST["name"])); - $email = filter_var(trim($_POST["email"]), FILTER_VALIDATE_EMAIL); - $subject = strip_tags(trim($_POST["subject"])); - $message = strip_tags(trim($_POST["message"])); - $user_answer = isset($_POST['answer']) ? trim($_POST['answer']) : ''; + // Vérifications anti-spam + if (($nobotc != md5($nobotv)) || empty($nobotv) || !empty($nobots)) { + echo "" . $txt['antispam_error'] . ""; + return; + } - // Validation des données - if (empty($name) || empty($email) || empty($subject) || empty($message) || empty($user_answer)) { - echo ""; - echo $txt['required_fields']; - echo ""; - return ; // Réaffiche le formulaire en cas d'erreur - } else { - // Vérifier la présence de liens : si oui, fin du script - if (preg_match('/http(s?):\/\//ism', $message)) { - echo ""; - echo $txt['link_error']; - echo ""; - return ; // Réaffiche le formulaire en cas d'erreur - exit(); // Arrêter l'exécution si un lien est trouvé - } + // Traitement des données du formulaire + if ($_SERVER["REQUEST_METHOD"] === "POST") { + $name = strip_tags(trim($_POST["name"])); + $email = filter_var(trim($_POST["email"]), FILTER_VALIDATE_EMAIL); + $subject = strip_tags(trim($_POST["subject"])); + $message = strip_tags(trim($_POST["message"])); + $user_answer = isset($_POST['answer']) ? trim($_POST['answer']) : ''; - // Vérifier la présence de mots-clés - $bad_words = $config['bad_words']; - foreach ($bad_words as $bad) { - if (stripos($message, $bad) !== false) { - echo ""; - echo $txt['bad_word_error']; - echo ""; - return ; // Réaffiche le formulaire en cas d'erreur - exit(); // Arrêter l'exécution si un mot interdit est trouvé - } - } + // Validation des champs obligatoires + if (empty($name) || empty($email) || empty($subject) || empty($message) || empty($user_answer)) { + echo "" . $txt['required_fields'] . ""; + return; + } - // Vérifier la réponse à la question antispam - if (isset($_POST['submit_form'])) { - if (!empty($user_answer) && in_array(strtolower($user_answer), array_map('strtolower', $correct_answers))) { - echo $txt['good_answer']; - unset($_SESSION['current_question']); - unset($_SESSION['correct_answers']); - // Envoi de l'e-mail - $to = $config['email']; // Remplacez par votre adresse e-mail - $subject_prefix = $config['subject_prefix']; - $subjectreal = "$subject_prefix : $subject"; - $headers = "From: $name <$email>"; - if (mail($to, $subjectreal, $message, $headers)) { - echo $txt['email_success']; - } else { - echo $txt['email_error']; - } - } else { - echo ""; - echo $txt['bad_answer']; - echo ""; - return ; // Réaffiche le formulaire en cas d'erreur - } - } + // Vérifier la présence de liens + if (preg_match('/http(s?):\/\//i', $message)) { + echo "" . $txt['link_error'] . ""; + return; + } + + // Vérifier les mots interdits + $bad_words = $config['bad_words']; + foreach ($bad_words as $bad) { + if (stripos($message, $bad) !== false) { + echo "" . $txt['bad_word_error'] . ""; + return; } } + + // Vérification de la réponse anti-spam + if (!empty($user_answer) && in_array(strtolower($user_answer), array_map('strtolower', $correct_answers))) { + echo $txt['good_answer']; + + // Réinitialiser la session pour la question + unset($_SESSION['current_question']); + unset($_SESSION['correct_answers']); + + // Préparer l'envoi de l'email + $to = $config['email']; + $subject_prefix = $config['subject_prefix']; + $subjectreal = "$subject_prefix : $subject"; + $headers = "From: $name <$email>"; + + if (msmtp_send($to, $subjectreal, $message, $headers, $account)) { + echo $txt['email_success']; + } else { + echo $txt['email_error']; + } + } else { + echo "" . $txt['bad_answer'] . ""; + } } } ?>