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'] . "";
+ }
}
}
?>