$subject) { $normalPool[] = [ 'id' => 'normal_' . $index, 'sender' => $normalSenders[array_rand($normalSenders)], 'subject' => $subject, 'preview' => $normalPreviews[array_rand($normalPreviews)], 'is_spam' => false, 'time' => sprintf('%02d:%02d', random_int(8, 19), random_int(0, 59)) ]; } $spamPool = []; foreach ($spamSubjects as $index => $subject) { $spamPool[] = [ 'id' => 'spam_' . $index, 'sender' => $spamSenders[array_rand($spamSenders)], 'subject' => $subject, 'preview' => $spamPreviews[array_rand($spamPreviews)], 'is_spam' => true, 'time' => sprintf('%02d:%02d', random_int(0, 23), random_int(0, 59)) ]; } // Mélanger les tableaux shuffle($normalPool); shuffle($spamPool); // Sélectionner 9 emails normaux et 1 spam $selected = array_slice($normalPool, 0, 9); $selected[] = $spamPool[0]; shuffle($selected); // Retourner le round return [ 'token' => bin2hex(random_bytes(16)), 'correct_id' => $spamPool[0]['id'], 'emails' => $selected, 'attempts_left' => $maxAttempts ]; } if (!isset($_SESSION['captcha_round']) || !is_array($_SESSION['captcha_round'])) { $_SESSION['captcha_round'] = buildInboxRound( $normalSubjects, $normalSenders, $normalPreviews, $spamSubjects, $spamSenders, $spamPreviews, $maxAttempts ); } // Récupérer le round actuel $round = $_SESSION['captcha_round']; $error = ''; $success = false; $locked = false; // Si formulaire soumis via POST if ($_SERVER['REQUEST_METHOD'] === 'POST') { $postedToken = $_POST['captcha_token'] ?? ''; $selectedMail = $_POST['selected_mail'] ?? ''; // Si token invalide if (!hash_equals($round['token'], $postedToken)) { $error = 'Session invalide, recharge la page.'; // Si plus d'essais } elseif (($round['attempts_left'] ?? 0) <= 0) { $locked = true; $error = 'Tu n’as plus d’essais. Recharge une nouvelle série.'; // Si mail incorrect } elseif ($selectedMail !== $round['correct_id']) { $_SESSION['captcha_round']['attempts_left']--; $round = $_SESSION['captcha_round']; // Si plus d'essais après décrémentation if (($round['attempts_left'] ?? 0) <= 0) { $locked = true; $error = 'Perdu. Tu n’as plus d’essais. Recharge une nouvelle série.'; // Sinon, message d'erreur } else { $error = 'Ce n’est pas le bon mail. Regarde mieux le message le plus agressif ou trop urgent.'; } // Si mail correct } else { $_SESSION['captcha_valid'] = true; unset($_SESSION['captcha_round']); $success = true; } } // Récupérer le nombre d'essais restants $attemptsLeft = $round['attempts_left'] ?? 0; // Afficher le captcha ?> Test anti-robot

Vérification réussie

Bravo, tu as trouvé le mail frauduleux. Redirection en cours...

🛡️ Test anti-robot

Vérification humaine

Pour continuer, cliquez sur le mail frauduleux parmi les 10 messages ci-dessous.

Vérification demandée Trouver le spam
Essais restants /
Recharger une nouvelle série
Test anti-robot : trouvez le mail qui ressemble à une arnaque