Où insérer le script captcha dans mon formula

Fermé
vegamax Messages postés 134 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 22 février 2017 - 13 juin 2010 à 21:10
bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 - 17 juin 2010 à 16:59
Bonjour à tous,
Tout d'abord je dois avouer que je suis néophyte en la matière mais vous le verrez bien vite...
Sur Internet j'ai récupéré un script de formulaire et un script de captcha.
Mon formulaire de base fonctionne mais pas le captcha.
Pourriez-vous m'indiquer ce que je dois faire pour que le captcha apparaisse et fonctionne ? Merci

1. Ci-après le code du formulaire :
<?php
 
// On vérifie si la fonction ini_set() a été désactivée...
$desactive = ini_get('disable_functions');
if (preg_match("/ini_set/i", "$desactive") == 0) {
// Si elle n'est pas désactivée, on définit ini_set de manière à n'afficher que les erreurs...
ini_set("error_reporting" , "E_ALL & ~E_NOTICE");
}
 
// Vérifier que le formulaire a été envoyé...
if (isset($_POST['envoi'])) {
 
 
//On commence une session pour enregistrer les variables du formulaire...
 
session_start();
 
$_SESSION['champ1'] = $_POST['champ1'];
$_SESSION['champ2'] = $_POST['champ2'];
$_SESSION['champ3'] = $_POST['champ3'];
$_SESSION['champ4'] = $_POST['champ4'];
$_SESSION['champ5'] = $_POST['champ5'];
$_SESSION['champ6'] = $_POST['champ6'];
$_SESSION['zone_email1'] = $_POST['zone_email1'];
 
//Evaluation du bouton 1 ...
switch($_POST['bouton1']) {
case "oui":
$_SESSION['bouton1'] = "oui";
break;
default:
$_SESSION['bouton1'] = "";
} // Fin du switch...
 
//Enregistrement des zones de texte...
$_SESSION['zone_texte1'] = $_POST['zone_texte1'];
$_SESSION['zone_texte2'] = $_POST['zone_texte2'];
 
// Définir l\'icone apparaissant en cas d\'erreur...
 
 
// Définir sur 0 pour afficher un petit x de couleur rouge.
// Définir sur 1 pour afficher l\'image d\'une croix rouge telle que celle utilisée dans l\'assistant
// Si vous utilisez l\'option 1, l\'image de la croix rouge \'icone.gif\' doit se trouver dans le répertoire \'images\',
// ce dernier devant se trouver au même niveau que votre formulaire...
$flag_icone = 0;
 
// On vérifie si $flag_icone est défini sur 0 ou 1...
if ($flag_icone == 0) {
$icone = "<b><font size=\"3\" face=\"Arial, Verdana, Helvetica, sans-serif\" color=\"#CC0000\">x</font></b>";
} else {
$icone = "<img src=\"images/icone.gif\"";
}
 
// Définir l'indicateur d'erreur sur zéro...
$flag_erreur = 0;
// N'envoyer le formulaire que s'il n'y a pas d'erreurs...
if ($flag_erreur == 0) {                                     
 
// Addresse de réception du formulaire
$email_dest = "trucmuche@labas.com";
$sujet = "Demande d'information via altenaconseils.com";
$entetes ="MIME-Version: 1.0 \n";
        $entetes .="From: Altena Conseils<trucmuche@labas.com>\n";
        $entetes .="Return-Path: Altena Conseils<trucmuche@labas.com>\n";
        $entetes .="Reply-To: Altena Conseils<trucmuche@labas.com>\n";
        $entetes .="Content-Type: text/html; charset=iso-8859-1 \n";
        $partie_entete = "<html>\n<head>\n<title>Formulaire</title>\n<meta http-equiv=Content-Type content=text/html; charset=iso-8859-1>\n</head>\n<body bgcolor=#FFFFFF>\n";
 
 
//Partie HTML de l'e-mail...
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Société = " . $_SESSION['champ1'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Nom = " . $_SESSION['champ2'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Prénom = " . $_SESSION['champ3'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Ville = " . $_SESSION['champ4'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Tél fixe = " . $_SESSION['champ5'] . "</font><br>\n";
$partie_champs_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Tél portable = " . $_SESSION['champ6'] . "</font><br>\n";
$partie_zone_email .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Email = " . $_SESSION['zone_email1'] . "</font><br>\n";
$partie_boutons .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">J'accepte d'être contacté(e) par email = " . $_SESSION['bouton1'] . "</font><br>\n";
$partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Activité = " . $_SESSION['zone_texte1'] . "</font><br>\n";
$partie_zone_texte .= "<font face=\"Verdana\" size=\"2\" color=\"#003366\">Ma demande / Mon message = " . $_SESSION['zone_texte2'] . "</font><br>\n";
                                      
 
                                      // Fin du message HTML
                                      $fin = "</body></html>\n\n";
                                      
                                      $sortie = $partie_entete . $partie_champs_texte . $partie_zone_email . $partie_listes . $partie_boutons . $partie_cases . $partie_zone_texte . $fin;
 
 
                                      // Send the e-mail
                                      if (@!mail($email_dest,$sujet,$sortie,$entetes)) {
                                      echo("Envoi du formulaire impossible");
                                      exit();
                                      } else {
 
                    // Rediriger vers la page de remerciement
                    header("Location:http://www.altenaconseils.com/merci.html");
                    exit();
                  } // Fin else
                           } // Fin du if ($flag_erreur == 0) {
                       } // Fin de if POST
?>
<html>
<head>  
 
<script language="JavaScript">
 
 
function verifSelection() {
 
 
if (document.mail_form.champ2.value == "") {
alert("Merci de saisir votre nom")
return false
} 
 
if (document.mail_form.champ3.value == "") {
alert("Merci de saisir votre prénom")
return false
} 
 
if (document.mail_form.champ4.value == "") {
alert("Merci de saisir votre ville")
return false
} 
 
if (document.mail_form.zone_email1.value == "") {
alert("Merci de saisir votre adresse courriel")
return false
}
 
invalidChars = " /:,;'"
 
for (i=0; i < invalidChars.length; i++) {     // does it contain any invalid characters?
badChar = invalidChars.charAt(i)
 
if (document.mail_form.zone_email1.value.indexOf(badChar,0) > -1) {
alert("Votre adresse e-mail contient des caractères invalides. Veuillez vérifier.")
document.mail_form.zone_email1.focus()
return false
}
}
 
atPos = document.mail_form.zone_email1.value.indexOf("@",1)                 // there must be one "@" symbol
if (atPos == -1) {
alert('Votre adresse e-mail ne contient pas le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}
 
if (document.mail_form.zone_email1.value.indexOf("@",atPos+1) != -1) {      // and only one "@" symbol
alert('Il ne doit y avoir qu\'un signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}
 
periodPos = document.mail_form.zone_email1.value.indexOf(".",atPos)
 
if (periodPos == -1) {                               // and at least one "." after the "@"
alert('Vous avez oublié le point "." après le signe "@". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}
 
if (periodPos+3 > document.mail_form.zone_email1.value.length)       {              // must be at least 2 characters after the 
alert('Il doit y avoir au moins deux caractères après le signe ".". Veuillez vérifier.')
document.mail_form.zone_email1.focus()
return false
}
 
nbreboutons1 = document.mail_form.bouton1.length
 
        flag = 0
 
               for (i = 0; i < nbreboutons1 ; i++) {
 
                       if (document.mail_form.bouton1[i].checked) {
 
                       flag = 1
 
                       }
 
               }
 
 
 
if (document.mail_form.zone_texte1.value == "") {
alert("Merci de préciser votre domaine d'activité")
return false
} 
 
if (document.mail_form.zone_texte2.value == "") {
alert("Merci de préciser votre demande (devis, informations...)")
return false
} 
 
} // Fin de la fonction
</script>
</head>
<body>  
<form name="mail_form" method="post" action="<?=$_SERVER['PHP_SELF']?>" onSubmit="return verifSelection()">
  <div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong>Formulaire
    de contact</strong></font></div><br><table align="center" width="566" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td height="16"><div align="center">
  <font color="#CC0000" size="2" face="Verdana, Arial, Helvetica, sans-serif, Tahoma"><strong><?php
if ($erreur_champ1) {
          echo(stripslashes($erreur_champ1));
          } else {
if ($erreur_champ2) {
          echo(stripslashes($erreur_champ2));
          } else {
if ($erreur_champ3) {
          echo(stripslashes($erreur_champ3));
          } else {
if ($erreur_champ4) {
          echo(stripslashes($erreur_champ4));
          } else {
if ($erreur_champ5) {
          echo(stripslashes($erreur_champ5));
          } else {
if ($erreur_champ6) {
          echo(stripslashes($erreur_champ6));
          } else {
if ($erreur_email1) {
          echo(stripslashes($erreur_email1));
          } else {
if ($erreur_bouton1) {
          echo(stripslashes($erreur_bouton1));
          } else {
if ($erreur_texte1) {
          echo(stripslashes($erreur_texte1));
          } else {
if ($erreur_texte2) {
          echo(stripslashes($erreur_texte2));
          } else {
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
} // Fin du else...
?>
    </strong></font>
    </div></td>
      </tr>
    </table>
<p align="center"></p><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Société</font></div></td>
          <td align="center" valign="middle" width="30">
      <?php
          if ($erreur_champ1) {
          echo($icone);
          }
          ?>
      </td>
      <td><input name="champ1" type="text" value="<?=stripslashes($_SESSION['champ1']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Nom</font></div></td>
          <td align="center" valign="middle" width="30">
      <?php
          if ($erreur_champ2) {
          echo($icone);
          }
          ?>
      </td>
      <td><input name="champ2" type="text" value="<?=stripslashes($_SESSION['champ2']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Prénom</font></div></td>
          <td align="center" valign="middle" width="30">
      <?php
          if ($erreur_champ3) {
          echo($icone);
          }
          ?>
      </td>
      <td><input name="champ3" type="text" value="<?=stripslashes($_SESSION['champ3']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Ville</font></div></td>
          <td align="center" valign="middle" width="30">
      <?php
          if ($erreur_champ4) {
          echo($icone);
          }
          ?>
      </td>
      <td><input name="champ4" type="text" value="<?=stripslashes($_SESSION['champ4']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Tél fixe</font></div></td>
          <td align="center" valign="middle" width="30">
      <?php
          if ($erreur_champ5) {
          echo($icone);
          }
          ?>
      </td>
      <td><input name="champ5" type="text" value="<?=stripslashes($_SESSION['champ5']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Tél portable</font></div></td>
          <td align="center" valign="middle" width="30">
      <?php
          if ($erreur_champ6) {
          echo($icone);
          }
          ?>
      </td>
      <td><input name="champ6" type="text" value="<?=stripslashes($_SESSION['champ6']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="140"><div align="right"><font face="Verdana" size="2">Email</font></div></td>
      <td width="30" align="center" valign="middle">
          <?php
          if ($erreur_email1) {
          echo($icone);
          }
          ?>
          </td>
      <td><input name="zone_email1" type="text" value="<?=stripslashes($_SESSION['zone_email1']);?>"></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="170"><div align="right"><font face="Verdana" size="2">J'accepte d'être contacté(e) par email</font></div></td>
      <td width="30" align="center" valign="middle">
          <?php
          if ($erreur_bouton1) {
          echo($icone);
          }
          ?>
          </td>
      <td><input type="radio" name="bouton1" value="oui"
      
      <font face="Verdana" size="2">oui</font></td></tr></table><table width="566" border="0" align="center"><tr>
      <td width="140" valign="top"><div align="right"><font face="Verdana" size="2">Activité</font></div></td>
      <td width="30" align="center" valign="top">
          <?php
          if ($erreur_texte1) {
          echo($icone);
          }
          ?>
          </td>
      <td><textarea name="zone_texte1" cols="45" rows="5"><?=stripslashes($_SESSION['zone_texte1']);?></textarea></td>
    </tr></table><table width="566" border="0" align="center"><tr>
      <td width="170" valign="top"><div align="right"><font face="Verdana" size="2">Ma demande / Mon message</font></div></td>
      <td width="30" align="center" valign="top">
          <?php
          if ($erreur_texte2) {
          echo($icone);
          }
          ?>
          </td>
      <td><textarea name="zone_texte2" cols="45" rows="10"><?=stripslashes($_SESSION['zone_texte2']);?></textarea></td>
    </tr></table><table width="566" border="0" align="center"><tr>
<td valign="top"><div align="center"> 
          <input type="reset" name="Reset" value=" Effacer ">
            
          <input type="submit" name="envoi" value="Envoyer">
        </div></td></tr></table><div align="center"><input name="nbre_fichiers" type="hidden" id="nbre_fichiers" value=""></div></form>
</body> 
</html>



2. Ci-après le code du captcha :
<?php
class capcha{
 
        var $min;
        var $max;
        var $alphabet;
        var $word;
        var $num;
        var $numletter;
 
        function capcha(){
               $this->min = 4;
               $this->max = 6;
               $this->alphabet = 'abcdefghijklmnopqrstuvwxyz';
               $this->grain_de_sel = '6tIb90ZAS11';
               $this->word = $this->createWord();
               $this->num = $this->chooseNum();
               $this->numletter = $this->num2letter();
        }
        
        function q(){
               return 'Quelle est la '.$this->numletter.' lettre du mot '.$this->word.' ?';
        }
 
        function createWord(){
 
               $len = rand($this->min,$this->max);
               for($i=0;$i<$len;$i++){
                       $word[$i] = $this->alphabet[rand(0,strlen($this->alphabet)-1)];
               }
               return implode('',$word);
        }
 
        function chooseNum(){
               return rand(1,strlen($this->word));
        }
 
        function num2letter(){
               if($this->num == strlen($this->word)){
                       return 'dernière';
               }
               $array = array('1' => 'première','2' => 'deuxième','3' => 'troisième','4' => 'quatrième','5' => 'cinquième','6' => 'sizième','7' => 'septième','8' => 'huitième','9' => 'neuvième','10' => 'dixième');
               if(isset($array[$this->num])){
                       return $array[$this->num];
               }else{
                       return $this->num.'.ème';
               }       
        }
 
        function r(){
               return md5($this->grain_de_sel.$this->word[$this->num-1]);
        }
}
?>
 


Voici l'adresse où mon formulaire est visible : www.altenaconseils.com/formulaire3.php
Je suis arrivée à modifier le code pour que la zone "activité" soit plus petite.
Par contre, il me reste encore un pb avec le bouton radio "oui" : je souhaiterais que la personne qui oublie de cocher la case ait un message d'erreur lui disant de cocher l'option oui et que le formulaire ne puisse être envoyé si la case n'est pas cochée. (alors que là le formulaire part même si la case n'est pas cochée...).

Par ailleurs, pourriez-vous me dire si mon formulaire est suffisamment sécurisé ?

Merci d'avance pour votre aide






A voir également:

1 réponse

bg62 Messages postés 23590 Date d'inscription samedi 22 octobre 2005 Statut Modérateur Dernière intervention 15 avril 2024 2 362
17 juin 2010 à 16:59
voir plutôt dans la rubrique 'webmastering' ainsi que dans les astuces qui ont déjà des exemples tout faits ...
0