Captcha basique via une simple addition avec JS

  Information

Captcha similaire a Captcha basique via une simple addition, mais en y ajoutant un contrôle en JS. Utilise le code md5.js téléchargeable à l'adresse : http://pajhome.org.uk/crypt/md5/md5.js

  code source classé dans  Formulaires

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
                               
/*---------------------------------------------------------------*/
/*
Titre : Captcha basique via une simple addition avec JS

URL : https://phpsources.net/code_s.php?id=448
Auteur : amery
Date édition : 28 Aout 2008
Date mise a jour : 19 Sept 2019

Rapport de la maj:
- fonctionnement du code vérifié
*/
/*---------------------------------------------------------------*/?>
##### FICHIER checkform.js #################
function CheckForm()
{
var captcha=document.getElementById('form').captcha.value;
var vcaptcha=document.getElementById('form').vcaptcha.value;

if(captcha == "") {
alert('Veuillez répondre à  la question anti-robot, svp.'); return false; }
else if(hex_md5(captcha)!=vcaptcha) {
alert('Votre réponse à  la question anti-robot est incorrecte.'); return
false; }
return true;
}

#######################################

Code à  placer en début de page
<?php
session_start();
if($_POST['captcha']!="" && $_POST['captcha']==$_SESSION['resultat'])
{
// Traitement des données du formulaire
}

// Captcha
$nb1 = rand(1, 5);
$nb2 = rand(1, 5);
$somme = $nb1 + $nb2;
$_SESSION['resultat'] = $somme;
$captcha_crypted = md5($somme);

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<script type="text/javascript" src="checkform.js"></script>
<script type="text/javascript" src="md5.js"></script>
</head>
<body>

<form id="form" onsubmit='return CheckForm()' action="" method='post'>
<div>Combien font <?php echo $nb1; ?> + <?php echo $nb2; ?> ?</div>
<div><input class="input" type="text" size="20" name="captcha" /></div>
<div><small><i>
(Pour vérifier qu'il ne s'agit pas d'un robot qui saisit le formulaire)
</i></small></div>
<div><input class="input" type="submit" value="envoyer" /></div>
<div>
<input type="hidden" name="vcaptcha" value="<?php echo $captcha_crypted; ?>"/>
</div>
</form>

      Fonctions du code - Doc officielle PHP

Détail    php.net  
Description
Versions PHP
   echo
Affiche une chaîne de caractères
PHP 4, 5, 7 et 8
   md5
Calcule le md5 d'une chaîne (PHP 4, PHP 5, PHP 7, PECL hash:1.11.3)
PHP 4, 5, 7 et 8
   rand
Génère une valeur aléatoire
PHP 4, 5, 7 et 8
   session_start
Initialise une session
PHP 4, 5, 7 et 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[6]

  • avatar

    X660

    20 Oct 2008 à 11:59

    Je ne vois pas le rapport avec la variable de session. Cette protection n'est pas efficace. Le robot va récupérer les deux nombres, les additionner puis les envoyer au serveur. Il ne va même pas exécuter cette "pseudo" sécurité en md5 qui ne sert à rien car strictement coté client.

    Coté serveur, la valeur que le robot aura posté (c'est à dire celle de cette simple addition) sera dans $_POST['captcha'], comparée à $_SESSION['resultat'], le test sera valide car les robots savent gérer les cookies (c'est la base quand même).

    Ce code source montre simplement la "base" des captcha non graphique. Ceci dit, il faudra que le robot soit spécialement configuré pour spammer votre site et identifier l'addition dans le formulaire, donc si le site n'a pas de grand intérêt pour les spammeurs, cette protection suffira.

  • avatar

    Koogar

    04 Sept 2008 à 11:25

    @superpigeon:
    le robot peut faire l'addition mais pas le test sur la variable de session

  • avatar

    Amery

    04 Sept 2008 à 11:07

    Je n'ai pas mis le code du fichier md5.js, parce qu'il n'est pas de moi. Mais il est disponible librement sur le site : ici

    J'utlise ce bout de code sur mon site et je n'ai jamais de spam dans mes formulaires (peut-être que mon site n'est pas très visité non plus...). Il est tout à fait possible de l'adapter avec un captcha sous forme d'image. Le principe est exactement le même. Je vais essayer de le faire...

  • avatar

    Superpigeon

    04 Sept 2008 à 08:51

    Bon mon comentaire est parti un peu vite,mais j'aurais voulu ajouter :
    Ce serait pas mal d'avoir le code du ficher "md5.js" également !

  • avatar

    Superpigeon

    04 Sept 2008 à 08:50

    Ouais, c'est vrai bonne idée de mettre en md5 la solution.

    Par contre, ça aurait été beaucoup plus efficace avec un captcha graphique, parce que là, je pense qu'un robot est capable de faire une addition (enfin, peut-être que je me trompe).

     

  • avatar

    Rgz

    28 Aout 2008 à 16:40

    Pas mal, bonne idée


 Autres snippets qui pourraient vous intéressez

Captcha PHP basique via une simple addition

Compatibilité : PHP 5, PHP 7, PHP 8

Captcha simple qui utilise les sessions à intégrer dans ces formulaires.

Captcha évolué avec image généré

Compatibilité : PHP 5, PHP 7, PHP 8

Il existe beaucoup de script de captcha sur le Net, des simples et des plus compliqués. Celle ci est simple à mettre en place.

Addition de mois à une date

Compatibilité : PHP 5, PHP 7, PHP 8

Explication du code : Permet l'ajout de mois par rapport à une date donnée. Code compatible php7

Générateur d'images pour captcha

Compatibilité : PHP 5, PHP 7, PHP 8

Générateur automatique d'images pour Captcha. Le texte de la captcha est stocké dans une variable de session inaccessible côté client.

Transparence simple sur une image - PHP Sources

Compatibilité : PHP 5, PHP 7, PHP 8

Permet de prendre automatiquement la couleur de fond d'une image pour lui affecter la transparence, et pouvoir afficher l'image sur des fonds de couleurs différentes.

* Requêtes exécutées avec Recherche Contextuelle
avatar

Amery

  28 Aout 2008

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    19 Sept 2019
    fonctionnement du code vérifié

12 957 Vues
Compatibilité du code
PHP 5, 7 et 8+