Problème vérification de formulaire aidez moi !!

Fermé
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015 - Modifié par ferraioli le 17/05/2013 à 00:43
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015 - 21 mai 2013 à 02:07
Bonsoir, ça fait 4h que j'essaye de faire un script que celon moi est correct ! mais ça va paaas !!!

J'ai fait genre un rapport de bug avec deux textarea
type de bug et explication du bug.
ça marche niquel quand j'écrit dans les textarea le type et l'explication et je click sur le bouton envoyer, ça envoi bien le bug dans ma base de donné.

Aprés j'ai voulut faire une vérification avant d'envoyer le bug dans la base de donné.
Donc il faut répondre a une addition en gros au hasard genre 5+5 ou 1+3 etc..

Si la réponse est corrécte le bug est envoyé dans la base de donné sinon echo ' Votre addition est fausse';

Bref voici le code je vous en prie aidez moi :)

<?php
$numero1 = rand(0, 10);
$numero2 = rand(0, 10);
$addition = "+";
$compare = $numero1 + $numero2;
?>


<!DOCTYPE html>
<div id="top">
 <p><span>» Bug tracker</span>» Bug tracker</p>
</div>
<div id="content">
 <img src="style/img/topContent.png">
  <div id="text">
   <div class="title">Aidez nous à résoudre nos bugs, envoyez par ticket le bug que vous avez rencontré !</div>
            <br>
   <br>
   <center>
   <div class="right" style="float:center; text-align:center;">Type de bug : </div>
   <form method="post" action="" id="fallo">        
         <textarea name="textarea" id="textarea" rows="2" style="background-color:cyan; opacity:0.5;"></textarea>       
         <br> 
         <br>
         <br>
         <div class="right" style="float:center; text-align:center;">Explication du bug : </div>   
         <textarea name="textarea2" id="textarea2"  rows="3" style="background-color:cyan; opacity:0.5;" ></textarea> 
         <br> 
         <br>
         <br>
         <?php echo $numero1; ?>
            <?php echo $addition; ?>
   <?php echo $numero2; ?>=
         <input name="verifica" id="verifica" type="text" style="background-color:white; text-align:center;">
         <br> 
         <br>
         <br>  
         <input name="inviamo" id="inviamo" type="submit" class="btn btn-inverse" value="Envoyer"/ >        
         </form>        
  </center>
    <div class="clear_right"></div></div>
 <img src="style/img/bottomContent.png">
</div>





<?php
//Si on click sur le bouton envoyer//
if(isset($_POST['inviamo']))
{



//construction de varable//
$textarea = htmlentities($_POST['textarea']);
$textarea2 = htmlentities($_POST['textarea2']);
$verifica = htmlentities($_POST['verifica']);
$connexion = mysql_connect("localhost", "root", "");
$database = mysql_select_db("ancestra_all");




// si les champs sont vides //
if($textarea==NULL OR $textarea2==NULL OR $verifica==NULL)
{
 echo'<center>';
 echo "Vos champs sont vides";
 echo'</center>';
}



//Sinon envoyer la requete dans la base de donnéé//

 else
{
  if ($compare==$verifica)
  {

    $riquesta='insert into cms_bug_tracker (type, explication, author) values ("'.$textarea.'", "'.$textarea2.'", "pseudo" )';
       $resultato=mysql_query($riquesta);
       echo"Votre message a eté envoyer";
    }
   else
   {
    echo"Votre addition est fausse";
   }
}







}
?>


Cordialement ferraioli.

4 réponses

Utilisateur anonyme
17 mai 2013 à 08:42
Bonjour

La valeur de $compare que tu utilises pour ton test n'est pas la bonne.
Tu utilises une valeur qui vient d'être tirée au sort pendant la présente exécution du script, alors que ton utilisateur a rempli le formulaire la fois précédente. Je détaille :
Ton script s'exécute pour la 1ère fois. tu présente un formulaire à ton visiteur avec une certaine addition qui donne un certain résultat. Comme le formulaire n'est pas rempli, isset($_POST['inviamo']) est faux et la vérification à la fin du formulaire n'est pas faite.
L'utilisateur remplit et valide le formulaire : ton script est appelé à nouveau.
IL RECALCULE DONC une nouvelle valeur aléatoire pour $compare. Quand tu vérifieras cette valeur par rapport à celle saisie par le visiteur, elle n'a aucune raison d'être égale.

Deux solutions (il y en a certainement d'autres) : tu mémorises la valeur à vérifier dans une variable de session, ou dans un champ hidden de ton formulaire.
0
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015
17 mai 2013 à 15:29
Bonjour, merci pour ta réponse, effectivement je comprend mieu, des fois aux hasard mon script marche !
Mais je ne vois pas comment faire ça avec une variable session ou hidden :/

Pourrais tu me donner un exemple?


Cordialement
0
Utilisateur anonyme
17 mai 2013 à 15:50
méthode avec champ hidden :

Oublie ta variable $compare
Tu ajoutes dans ton formulaire
<input type="hidden" name="verif" value="<?php echo $numero1+$numero2; ?>" />

Comme ça, tu recevras la bonne réponse avec le formulaire.
Au lieu de vérifier
  if ($compare==$verifica)

tu dois vérifier
  if ($_POST['verif']==$verifica)

Ça n'est pas plus compliqué que ça...
0
ferraioli Messages postés 11 Date d'inscription jeudi 3 février 2011 Statut Membre Dernière intervention 10 juin 2015
21 mai 2013 à 02:07
Merci beaucoup le père :)

Aurais tu des conseil a me donner pour mieu protèger mon code ?


Cordialement
0