Bouts de Codes PHP

Captcha utilisant les sessions 2 (avec contrôle JS)

Information sur le code source PHP

Ecrit par :  amery
Site de l'auteur Voir
Codes en PHP de l'auteur : [4] sources Voir
Enregistrement le 28 Aout 2008 - Vu 3005 fois
Impression: Imprimer le code
8
10

Description du code source

Information sur le code source

Petit captcha similaire au "captcha utilisant les sessions", 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
Un exemple : http://www.carougeinfo.ch/captcha/exemple

Code Source



.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
.69
.70
.71
.72
.73
.74
 

<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Captcha utilisant les sessions 2 (avec contrôle JS)       */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts448-PHP.htm              */
/* Auteur         : amery                                                     */
/* Date édition   : 28 Aout 2008                                              */
/* Website auteur : http://www.carougeinfo.net                                */
/*                                                                            */
/******************************************************************************/
?>
#####  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 source

Fonctions php / mysql PHP

  • session_start : Initialise une session - (PHP 4, PHP 5)
  • rand : Génère une valeur aléatoire - (PHP 4, PHP 5)
  • md5 : Calcule le md5 d'une chaîne - (PHP 4, PHP 5, PECL hash:1.1-1.3)
  • echo : Affiche une chaîne de caractères - (PHP 4, PHP 5)

Commentaires (6)
Nouveau message rgz
le 28 Aout 2008 à 16:40:00
Pas mal, bonne idée wink
Nouveau message superpigeon
le 04 Sept 2008 à 08:50:00
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).


Nouveau message superpigeon
le 04 Sept 2008 à 08:51:00
[EDIT]
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 ! :)
[/EDIT]
Nouveau message amery
le 04 Sept 2008 à 11:07:00
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 : http://pajhome.org.uk/crypt/md5/md5.js

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...
Nouveau message Koogar
le 04 Sept 2008 à 11:25:00
@superpigeon:
le robot peut faire l'addition mais pas le test sur la variable de session wink
Nouveau message x660
le 20 Oct 2008 à 11:59:00
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.

Poster un commentaire

:P :)
:wink: :lol:
:surprised: :confused:
:idea: :no:
Taille du texte:
Couleur:
 
Code de sécurité
Offres d'emploi
Librairie

Langages de programmation

La librairie est ouverte à tous et elle est accès principalement sur les langages PHP et MySQL. Vous trouverez aussi d'autres langages de programmation tel que le CSS, HTML, AJAX, ASP.. Plus de 300 références facilement accessibles. Visiter

  • PHP 5 pour les Nuls
  • S'initier à la programmation : Avec des exemples en C, C++, C#, Java et PHP
  • Tout réussir avec PHP & MySQL
  • Sécurité PHP 5 et MySQL
  • Des CSS au DHTML : JavaScript appliqué aux feuilles de style
  • PHP et MySQL 4 : Création, développement et administration de bases de données et de sites web
  • PHP et MYSQL pour les Nuls
  • Formation Rapide : PHP 5
  • PHP 5 : Accès aux données (MySQL, Oracle, SQL Server, SQLite...)
  • PHP 5 : Cours et exercices