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    
 68    
                               
<?php
/*---------------------------------------------------------------*/
/*
    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 à 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(15);
$nb2 rand(15);
$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

   php.net   Description Versions PHP OUTIL
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7, PHP 8
   md5 Calcule le md5 d'une chaîne - (PHP 4, PHP 5, PHP 7, PECL hash:1.1-1.3) PHP 4, PHP 5, PHP 7, PHP 8
   rand Génère une valeur aléatoire PHP 4, PHP 5, PHP 7, PHP 8
   session_start Initialise une session PHP 4, PHP 5, PHP 7, PHP 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

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

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

Compatibilité : PHP 5, PHP 7

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

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

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

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.

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL

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é

11 995 Vues
Compatibilité
PHP 5, 7 et 8+