Captcha sans image. Comment l'intégrer?

cs_Davidoux94 Messages postés 1 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 5 mai 2008 - 5 mai 2008 à 22:34
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 6 mai 2008 à 14:52
Bonjour à tous !

Je viens vers vous pour avoir une réponse.

J'ai un formulaire en ligne, en PHP, et depuis quelques temps je reçois des validations de robots, ce qui est toujours désagréable.

J'aimerais mettre en place un petit "captcha" afin de contrer les validation automatiques, mais je n'aime pas les captcha qu'on voit souvent, avec des lettres tordues, parfois dures à déchiffrer.

Je voulais savoir si pouviez me donner une indication pour intégrer la phrase suivante :"Combien font deux + deux?" et la seule réponse possible serait "quatre".

Voici mon code PHP :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<?php
// Couleur du texte des champs si erreur saisie utilisateur
$color_font_warn= "#FF0000";
// Couleur de fond des champs si erreur saisie utilisateur
$color_form_warn="#FFCC66";
// Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
$list['f_6']=array("Amincissement"," Yoga"," Musculation"," Pilates"," Tonification générale"," Self-Defense"," Tennis"," Squash"," Gym douce");
$list['f_8']=array("Salsa"," Tango"," Rock"," Danse oreintale"," Danse africaine"," Danse classique"," Modern'Jazz"," Country"," Valse"," Danse Africaine");
$list['f_10']=array("Fréquence découverte : 1 heure "," Fréquence Initiation : 3 heures "," Fréquence détermination : + 6 heures");
$list['f_11']=array("Formule Évasion : 3 heures de danse thématique "," Formule Enterrement de vie de célibataire"," Formule Apprendre la valse du mariage ");
$list['f_14']=array("Oui");
if(isset($_POST['submit'])){
    $erreur="";
    // Nettoyage des entrées
    while(list($var,$val)=each($_POST)){
    if(!is_array($val)){
        $$var=strip_tags($val);
    }else{
        while(list($arvar,$arval)=each($val)){
                $$var[$arvar]=strip_tags($arval);
            }
        }
    }
    // Formatage des entrées
    $f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
    $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
    $f_3=strip_tags(trim($f_3));
    $f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
    $f_7=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_7)));
    $f_9=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_9)));
    $f_12=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_12)));
    // Verification des champs
    if(strlen($f_1)<2){
        $erreur.="<li>Le champ &laquo; Nom et Prénom &raquo; est vide ou incomplet.";
        $errf_1=1;
    }
    if(strlen($f_2)<2){
        $erreur.="<li>Le champ &laquo; Téléphone &raquo; est vide ou incomplet.";
        $errf_2=1;
    }
    if(strlen($f_3)<2){
        $erreur.="<li>Le champ &laquo; Email &raquo; est vide ou incomplet.";
        $errf_3=1;
    }else{
        if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
        '@'.
        '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
        '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
        $f_3)){
            $erreur.="<li>La syntaxe de votre adresse e-mail n'est pas correcte.";
            $errf_3=1;
        }
    }
    if(strlen($f_5)<2){
        $erreur.="<li>Le champ &laquo; Ville &raquo; est vide ou incomplet.";
        $errf_5=1;
    }
    if(!$f_14){
        $erreur.="<li>Le champ &laquo; Je déclare avoir pris connaissance des conditions générales de Vente et de les avoir acceptées. &raquo; requiert au moins une sélection.";
        $errf_14=1;
    }
    if($erreur==""){
        // Création du message
        $titre="Message de votre site";
        $tete="From:Site@Savoir-danser.com\n";
        $corps.="Nom et Prénom : ".$f_1."\n";
        $corps.="Téléphone : ".$f_2."\n";
        $corps.="Email : ".$f_3."\n";
        $corps.="Adresse (rue, digicode, ect) : ".$f_4."\n";
        $corps.="Ville : ".$f_5."\n";
        for($id=0; $id<count($list['f_6']); $id++){
            if($f_6[$id]==1){
                $corps.="Sport désiré (plusieur réponses possibles) : : ".$list['f_6'][$id]."\n";
            }
        }
        $corps.="Autre sport (précisez) : ".$f_7."\n";
        for($id=0; $id<count($list['f_8']); $id++){
            if($f_8[$id]==1){
                $corps.="Danse désirée (plusieurs réponses possibles) : ".$list['f_8'][$id]."\n";
            }
        }
        $corps.="Autre danse (précisez) : ".$f_9."\n";
        $corps.="Fréquence souhaitée : ".$list['f_10'][$f_10]."\n";
        for($id=0; $id<count($list['f_11']); $id++){
            if($f_11[$id]==1){
                $corps.="Formules spéciales : ".$list['f_11'][$id]."\n";
            }
        }
        $corps.="Si cours collectif, indiquez le nombre de personnes : : ".$f_12."\n";
        $corps.="Remarques, suggestions : : ".$f_13."\n";
        for($id=0; $id<count($list['f_14']); $id++){
            if($f_14[$id]==1){
                $corps.="Je déclare avoir pris connaissance des conditions générales de Vente et de les avoir acceptées. : ".$list['f_14'][$id]."\n";
            }
        }
        if(mail("moi@monsite.com", $titre, stripslashes($corps), $tete)){
            $ok_mail="true";
        }else{
            $erreur.="<li>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.";
        }
    }
}
?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<style type="text/css" media="screen">
<!--
INPUT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
SELECT { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
TEXTAREA { color: #000; font-size: 11px; font-family: verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; background-color: #EEEEEE }
.txterror { color: black; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
.txtform { color: black; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular }
body {
    background-image: url(/images/linefond.jpg);
}
.Style1 {color: #333333}
.Style2 {color: #333333; font-size: 11px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; }
.Style3 {color: #333333; font-size: 12px; font-family: Verdana, Arial, Helvetica, Geneva, Swiss, SunSans-Regular; }
.Style4 {
    font-family: Arial, Helvetica, sans-serif;
    font-size: xx-large;
}
.Style5 {
    color: #9D080C;
    font-family: Arial, Helvetica, sans-serif;
}
.Style6 {font-size: 10px}
a:link {
    color: #666666;
}
-->
</style>

</head>

<? if($ok_mail=="true"){ ?>
            ----
Le message ci-dessous nous a bien été transmis, et nous vous en remercions.,
        ----
&nbsp;,
        ----
<tt><?echo nl2br(stripslashes($corps));?></tt>,
        ----
&nbsp;,
        ----

          Soyez assur&eacute;s que nous donnerons une suite &agrave; votre demande dans les meilleurs d&eacute;lais.

         ,
       
   

<? }else{ ?>
<form action='<? echo $PHP_SELF ?>' method='post' name='Form'>
<? if($erreur){ ?>
----
&nbsp;ERREUR, votre message n'a pas été transmis,

----
<?echo$erreur?>, <?}?>
----

  ,

----

 

   

   

    FORMULAIRE DE R&Eacute;SERVATION,

----

  ou demande d'informations sans engagement. ,

----
Les champs marqué d'un * sont obligatoires,
----

  &nbsp;,
  &nbsp;,

----

  Nom et Prénom* :,
;' value='<?echo stripslashes($f_1);?>' size='24' border='0'>,
----

  Téléphone* :,
;' value='<?echo stripslashes($f_2);?>' size='24' border='0'>,
----
Email* :,
;' value='<?echo stripslashes($f_3);?>' size='24' border='0'>,
----
Adresse (rue, digicode, ect) :,
 
    <textarea style='width:360 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_4' rows='6' cols='40'><?echo$f_4?></textarea>
  ,

----
Ville* :, ;' value='<?echo stripslashes($f_5);?>' size='24' border='0'>,
----

  &nbsp;,
  &nbsp;,

----

  Sport  désiré (plusieurs souhaits possibles)  :, <table border='0' cellspacing='0' cellpadding='0'>
<? for($id=0;$id<count($list['f_6']);$id++){
if($f_6[$id]==1){$ct="checked";}
print("----, </td>".$list[f_6][$id].", \");
unset($ct);
}?>

</td></tr>
<tr><td align='right' width='51%'>Autre sport (précisez) :</td><td>;' value='<?echo stripslashes($f_7);?>' size='24' border='0'></td></tr>
<tr>
  <td align='right'>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td align='right' width='51%' VALIGN=TOP>Danse désirée (plusieurs souhaits possibles) :</td><td>
<? for($id=0;$id<count($list['f_8']);$id++){
if($f_8[$id]==1){$ct=\"checked\";}
print(\"----
, ".$list[f_8][$id].", \");
unset($ct);
}?>

</td></tr>
<tr><td align='right' width='51%'>Autre danse (précisez) :</td><td>;' value='<?echo stripslashes($f_9);?>' size='24' border='0'></td></tr>
<tr>
  <td align='right'>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td align='right' width='51%' VALIGN=TOP>Fréquence souhaitée :</td><td>
<? for($id=0;$id<count($list['f_10']);$id++){
if($id==$f_10){$ct=\"checked\";}
print(\"----
, ".$list[f_10][$id].", \");
unset($ct);
}?>

</td></tr>
<tr>
  <td align='right' VALIGN=TOP>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr><td align='right' width='51%' VALIGN=TOP>Formules spéciales :</td><td>
<? for($id=0;$id<count($list['f_11']);$id++){
if($f_11[$id]==1){$ct=\"checked\";}
print(\"----
, ".$list[f_11][$id].", \");
unset($ct);
}?>

</td></tr>
<tr>
  <td align='right' width='51%'>Si cours collectif, indiquez le nombre de personnes :</td><td>;' value='<?echo stripslashes($f_12);?>' size='24' border='0'></td></tr>
<tr>
  <td height="21" align='right'>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td width='51%' height="88" align='right' VALIGN=TOP> Disponibilités durant lesquelles

    vous souhaiteriez prendre vos cours, ou commentaires :

    (Par exemple &quot;Tous les jeudi matin&quot; ou bien &quot;Tous les soirs vers 19 heures&quot;, ect)

</td>
  <td>
  <textarea style ='width:360 <?if($errf_13==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_13' rows='6' cols='40'><?echo$f_13?></textarea>
</td></tr>
<tr>
  <td align='right'>&nbsp;</td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td align='right' width='51%'>Je déclare être majeur et avoir lu et

    accepté
  les conditions générales de Vente .*</td>
  <td>
<? for($id=0;$id<count($list['f_14']);$id++){
if($f_14[$id]==1){$ct=\"checked\";}
print(\"----
, ".$list[f_14][$id].", \");
unset($ct);
}?>

</td></tr>
<tr>
  <td align='right'></td>
  <td>&nbsp;</td>
</tr>
<tr>
  <td align='right'>&nbsp;</td>
  <td></td>
</tr>
<tr><td colspan="2" align='right'>
    </tr>
  </table>
</td></tr>
</table>
</form>
<? } ?>

</html>

Merci de vos lumières et à bientot !

David

1 réponse

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
6 mai 2008 à 14:52
Après le captcha sans image, La tartine sans biscotte
Non découpe la partie importante sinon ça donne pas envie de lire et personne ne lit

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
Rejoignez-nous