Steve TENZA
Intervient pour votre site internet
Facebook Me contacter Cookie
Télécharger
Noter:
4/5 (3)
Ajouté/Modifié le 2023-10-28
Visionné 4442 fois

Nouveau Captcha : Liste de Codes à Sélectionner

Description

Découvrez un tout nouveau type de captcha qui se présente sous la forme d'une liste déroulante. L'utilisateur est mis au défi de choisir le bon code parmi plusieurs codes incorrects. Ce captcha se distingue par sa simplicité d'installation. En revanche, il est facile à craquer mais permettra de bloquer beaucoup de robots bas de gamme.

Pour bien comprendre le fonctionnement du script de ce captcha, il vous suffit de suivre les commentaires en PHP qui l'accompagnent. Si vous souhaitez le tester, vous pouvez le faire en cliquant sur le lien suivant : Cliquez ici pour tester le captcha.

Ce script offre également la possibilité de personnalisation grâce à deux paramètres configurables :

Paramètres

$NombreDeCaractCode - Vous permet de définir le nombre de caractères que vous souhaitez par code.
$NombreDeCodes - Vous permet de choisir combien de codes incorrects vous souhaitez inclure dans la liste.


Si vous recherchez une alternative, vous pouvez également explorer un autre type de captcha disponible ici : Captcha simple en PHP (En image) .

<?php
session_start();
function C2captchaList(){

//vous pouvez définir ici combien vous souhaitez avec de caractères pour chaque code
$caracteres = 4;

//vous pouvez définir ici combien vous souhaitez avoir de faux codes à choisir dans la liste déroulante
$nombre_de_codes = 5;

//j'ai enlevé le O (lettre o) et le 0 (chiffre 0) volontairement car ils peuvent prêter à confusion
$captcha = substr(str_shuffle("ABCDEFGHIJKLMNPQRSTUVWXYZ123456789"),0,$caracteres);

//pensez à bien initialiser la session avec "session_start();" tout en haut de votre page, avant n'importe quel balise HTML
$_SESSION['captcha'] = $captcha;

//initiation du tableau qui contiendra tous les faux codes à choisir dans la liste + le captcha
$liste_codes[] = $captcha;

$i = 0;
while($i < $nombre_de_codes - 1){

$liste_codes[] = substr(str_shuffle("ABCDEFGHIJKLMNPQRSTUVWXYZ123456789"),0,$caracteres);
$i ++;

}

//on mélange tous les codes pour pas que le bon code soit en premier dans la liste
shuffle($liste_codes);

return [
'liste' => $liste_codes,
'code' => $captcha
];
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Nouveau Captcha</title>
</head>
<body>
<?php

// Le formulaire est envoyé, on traite les données
if(isset($_POST['captcha'], $_SESSION['captcha'])){

// Si le captcha sélectionné n'est pas le bon
if($_POST['captcha'] != $_SESSION['captcha']){

//on stop le traitement
echo "<p>Captcha incorrect !</p>";

}else{

//on continu le traitement...
echo "<p>Captcha correct !</p>";

// Ici, vérifiez vos autres champs
// ...

}
}

// L'initialisation de $captcha doit impérativement être placée en dessous de la vérification des champs du formulaire, sinon le code sera toujours faux lors de sa vérification car il sera toujours un nouveau code
$captcha = C2captchaList();

?>


<form method="post">

<p>Ici les champs de votre formulaire...</p>

<p>Choisissez le code <?= $captcha['code'] ?> dans la liste suivante :</p>

<!-- avec onchange="this.form.submit()" on valide le formulaire dès qu'il à choisi le code! -->
<select name="captcha" onchange="this.form.submit()">
<option>Choissiez le code affiché :</option>
<?php
foreach($captcha['liste'] as $code):
echo '<option value="' . $code . '">' . $code . '</option>';
endforeach;
?>
</select>

<!-- on laisse le bouton valider au cas où le javascript ne serait pas activé sur le navigateur du visiteur -->
<input type="submit" name="valider" value="Valider">

</form>
</body>
</html>


J'espère que ce script gratuit vous est utile.
Pour soutenir mon travail, un simple don ou mettre une note est grandement apprécié.
Votre réussite en ligne commence ici

Vous cherchez à pousser encore plus loin vos idées ou à les concrétiser avec un site internet sur mesure ? Je suis là pour vous aider ! Mon expérience en développement web est à votre disposition.

Que ce soit la création de votre site web pro ou l'apport de fonctionnalités avancées à votre projet, contactez-moi pour en discuter et avoir un devis gratuit personnalisé.

Mon objectif est de vous offrir des solutions sur mesure qui répondent à vos besoins, et votre vision associée à mon expertise donnera vie à votre projet web parfait. Contactez-moi aujourd'hui, je réponds en général en moins d'une heure :

Demander un devis
Réponse rapide !

Vous recherchez un script précis ?

Dites-moi ce dont vous avez besoin, je peux développer le script demandé et vous envoyer un mail dès qu'il est dispo !

🔔 Vous pouvez laisser votre mail pour recevoir les nouveaux scripts. Pas de pub, pas de tracas. Vous êtes libre de le supprimer à tout moment.

Je prends en compte toutes les demandes. Les idées les plus populaires passent en priorité et seront publiées dès qu'elles seront prêtes. 2856 demandes reçues.

Si vous avez un projet en tête, je vous suggère de me contacter directement pour en discuter.

Commentaires

Ajouter un commentaire

Commenter
Pseudo/Nom
Email
Message
Captcha
memo1memo2
Commenter

jean-luc adant le 27 Janvier 2019 à 15:38

Super simple et en une seule page
j'ai simplement remplacer la ligne .

-

echo "Captcha correct!";

Par

echo '<h3 align="center">texte - <a href="www.monsite.be">texte du lien</a><br /></h3>';exit;

-
merci

Nouha le 16 Avril 2019 à 23:29

j'essay ce code mais j'ai un p'tit problème :(
Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\captcha\contact.php on line 11
comment le résoudre ?!

admin le 17 Avril 2019 à 00:28

Bonjour, il vous faut regarder à la ligne 11 si votre condition if est correcte.

Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\captcha\contact.php on line 11

TT22 le 11 Janvier 2021 à 13:23

Ce captcha est totalement inutile.
Vous donnez la réponse en clair, il est donc très facile de sélectionner automatiquement la bonne réponse.
Ci-dessous un exemple en Javascript qui valide le captcha automatiquement :

var code = document.body.innerHTML.match(new RegExp('code (.*) dans'))[1];
document.getElementsByTagName('select')[0].value = code;
document.getElementsByTagName('form')[0].submit();

admin le 11 Janvier 2021 à 14:01

Bonjour, merci pour votre commentaire.

Je sais, mais ça limite le post par robots car il faut cliquer sur quelque chose.

TT22 le 11 Janvier 2021 à 14:04

Non ça ne limite pas les posts par des robots, le code que j'ai envoyé le montre bien ! Il valide le formulaire sans intervention humaine.

Dan le 09 Juin 2022 à 07:59

Je modifirais la session par ceci pour améliorer et complexifier un peu pour éviter les man-and-the-middle :
<?php echo substr($_SESSION['captcha'], rand(1, 5), -rand(3, 5)); ?>
Le code ne pourra pas être automatisé.

Retour à la liste des scripts

Un site à créer ?
Contactez-moi