probleme de captcha

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de captcha

Re: probleme de captcha

par stealth35 » 22 févr. 2011, 11:35

if ( isset ($_POST['code_entre']) AND isset ($_POST['code']))
plutôt
if(isset($_POST['code_entre'], $_POST['code']))
mais normalement c'est plus :
if(filter_has_var(INPUT_POST, 'code_entre') && filter_has_var(INPUT_POST, 'code'))
:wink:

Re: probleme de captcha

par romantica » 22 févr. 2011, 11:27

ok compris,merci pour tout

Re: probleme de captcha

par charabia » 22 févr. 2011, 10:50

Je t'ai tout expliqué plus haut. Tu n'es pas un pro c'est pour ça que chercher par toi-même d'après les explications t'aidera bien plus.

En gros, lorsque tu valides ton formulaire et après vérification des champs, il va exécuter l'action qui se trouve être une autre page (enregistre...).

Ton code pour vérifier le captcha commence par :
if ( isset ($_POST['code_entre']) AND isset ($_POST['code']))
A quoi correspond POST si ce n'est les variables que tu récupères à partir de ton formulaire ? Il faut que tu fasses de tel manière que lorsque tu valides ton formulaire, ce dernier passe avant tout par cette vérification.

Re: probleme de captcha

par romantica » 22 févr. 2011, 10:35

merci mais je ne suis pas un pro,alors si tu veux bien m'indiquer la modif en vert ça serait sympa de ta part!
cordialement

Re: probleme de captcha

par charabia » 22 févr. 2011, 10:25

Après vérification des champs de ton formulaire par du javascript, tu le rediriges soit vers enregistre_conducteur.php?modif=1 soit vers enregistre_conducteur.php. Or tu as mis la vérification PHP du capcha dans la page du formulaire donc cette vérification ne se fera jamais.

Re: probleme de captcha

par romantica » 22 févr. 2011, 09:30

bonjour et merci voici le code complet du formulaire:

<?php
session_start();
?>

<html>
<script type="text/javascript" language="Javascript" >
<!--
 <?php
    $oui = '1';
    $value = '';
    $type = 'password';
    if ( isset ($_POST['code_entre']) AND isset ($_POST['code']))
    {
        $code_entre = $_POST['code_entre'];
        $code = $_POST['code'];
        $code = $code / '368.5';
        if ($code_entre == NULL)
        {
            $ok = ' Erreur, vous n\'avez pas entré de code.';
            $oui = '0';
        }
        elseif ($code_entre != $code)
        {
            $ok = ' Erreur, mauvais code.';
            $oui = '0';
        }
        else
        {
            $ok = ' OK, le code est bon.';
            $value = 'value="' .$code. '"';
            $type = 'text';
        }
    }
    else
    {
        $ok = '';
        $oui = '0';
    }
    if ( $oui == '0' )
    {
        $code = rand('100000', '999999');
        header ('Content-type: image/png');
        $image = imagecreate('56', '20');
        $noir = imagecolorallocate($image, '0', '0', '0');
        $blanc = imagecolorallocate($image, '255', '255', '255');
        imagestring($image, '4', '4', '2', $code, $blanc);
        imagepng($image, 'code.png');
        header ('Content-type: text/html');
    }
    $code = $code * '368.5';
    ?>
function verification()
{



 if(document.formulaire.pseudo.value == "")  {
   alert("Veuillez entrer un pseudo svp");
   document.formulaire.pseudo.focus();
   return false;
  }
   else if(document.formulaire.pwd.value == "") {
   alert("Veuillez entrer un mot de passe svp");
   document.formulaire.pwd.focus();
   return false;
  }
   else if(document.formulaire.pwd2.value == "") {
   alert("Veuillez confirmer votre mot de passe svp");
   document.formulaire.pwd2.focus();
   return false;
  }
  else   if(document.formulaire.pwd2.value != document.formulaire.pwd.value) {
   alert("Veuillez entrer un mot de passe identique svp");
   document.formulaire.pwd2.focus();
   return false;
  }
  else   if(document.formulaire.mail.value == "") {
   alert("Veuillez entrer une adresse email svp");
   document.formulaire.mail.focus();
   return false;
  }
  
  else  if(document.formulaire.mail.value.indexOf('@') == -1) {
   alert("Ce n'est pas une adresse mail valide");
   document.formulaire.mail.focus();
   return false;
  }
  else  if(document.formulaire.mail.value.indexOf('.') == -1) {
   alert("Ce n'est pas une adresse mail valide");
   document.formulaire.mail.focus();
   return false;
  }
 
   else if(document.formulaire.accord.checked == false) {
   alert("Veuillez accepter la difusion de vos coordonnées svp");
   document.formulaire.accord.focus();
   return false;
  } 
  
  	
return true
}
//-->
</script>

<table width="940" border="0" align="left" >

	<TR>
		<TD width="150" valign="top">
			<?php include('frame_gauche.php'); ?>
		</TD>

		<TD>

<?php
	
if ($_SESSION['loginOK'] == true) {
	include('menus_session.htm');
	echo "</br>";	
}
	
If ($modif != 2) {

$modif=$_GET['modif'];

		$pseudo2="";
		$mail="";
		$pwd="";
		$nom="nom";
		$prenom="prenom";
	}

if ($_SESSION['loginOK'] == true AND $modif == 1) {
	
	$id=$_SESSION['id'];
		
	include('connexion_SQL.php');
		
	$reponse = mysql_query("SELECT * FROM conducteurs WHERE ID='$id'") or die(mysql_error());
		
	while ($donnees = mysql_fetch_array($reponse) ) {
		$pseudo2=$donnees['pseudo'];
		$mail=$donnees['mail'];
		$pwd=$donnees['pwd'];
		$nom=$donnees['nom'];
		$prenom=$donnees['prenom'];
		$tel=$donnees['tel'];
		}
		
	mysql_close();
	}
	
	else {
		//$modif = "";
		}
?>

		
		
<form name="formulaire" action="

<?php
if ($modif == 1) { echo"enregistre_conducteur.php?modif=1"; }
else {echo"enregistre_conducteur.php"; }
?>

" method="post" onSubmit="return verification()">
  
  <table width="750" border="0">
    <tr>
      <td width="240" height="24"><p><strong>Je m'identifie:</strong></p>
      </td>
      <td width="500">&nbsp;</td>
  </tr>
  </table>
  
    <table width="750" border="0">
    <tr>
      <td width="240" height="24"><div align="right">Mon nom</div></td>
      <td width="500"><input name="prenom" type="text" <?php echo "value=\"$prenom\""; ?>	  onFocus="javascript:this.value=''" >
        <input name="nom" type="text" <?php echo "value=\"$nom\""; ?> onFocus="javascript:this.value=''" ></td>
    </tr>
	</table>
	
	<table width="750" border="0">
    <tr>
      <td width="240" height="24"><div align="right">Mon pseudo*</div></td>
      <td width="500"><input type="text" name="pseudo" <?php echo "value=\"$pseudo2\""; ?> ></td>
    </tr>
	</table>
	
	<table width="750" border="0">
    <tr>
      <td height="8"></td>
    </tr>
	</table>
  
	<table width="750" border="0">
  <tr>
    <td width="240" height="24"><div align="right">Je choisis un mot de passe*</div></td>
    <td width="500"><input type="password" name="pwd" <?php echo "value=\"$pwd\""; ?> ></td>
  </tr>
	</table>
  
  <table width="750" border="0">
  <tr>
    <td width="240" height="24"><div align="right">Je confirme le mot de passe*</div></td>
      <td width="500"><input type="password" name="pwd2" <?php echo "value=\"$pwd\""; ?>></td>
  </tr>
	</table>
<p>&nbsp;</p>
<p><strong>Pour me joindre:</strong></p>
<table width="750" border="0">
  <tr>
    <td width="240" height="24"><div align="right">Mon adresse mail*      </div></td>
    <td width="500"><input type="text" name="mail" <?php echo "value=\"$mail\""; ?>></td>
  </tr>
</table>

	<table width="750" border="0">
  <tr>
    <td width="240" height="24"><div align="right">Mon t&eacute;l&eacute;phone</div></td>
    <td width="500"><input type="text" name="tel" <?php echo "value=\"$tel\""; ?>></td>
  </tr>
	</table>

	
<p>* champs obligatoires</p>

<BR>

<p>
  <input name="accord" type="checkbox" value="oui" <?php if ($modif != "") {echo"checked"; } else {echo "unchecked"; } ?> >
  J'accepte que mes coordonnées soient communiquées aux usagers de ce site (dans tous les cas mon adresse mail ne sera pas visible sur le site)<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ce site s'engage à ne pas communiquer vos données à toute autre personne que les utilisateurs de ce site.<br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Je decharge les createurs de ce site de toute responsabilité en cas de problème survenu lors du covoiturage. 
  
  <br />
</p>
<blockquote>
  <p>
   	   <form method="post" action="">
        <p><img src="code.png" title="Code" alt="Code"/><label for="code_entre"> Entrez le code de l'image.</label> <input type="<?php echo $type ?>" name="code_entre" id="code_entre" size="7" maxlength="6" <?php echo $value; ?>/>
        <input type="submit" value="OK"/>
        <input name="code" id="code" type="hidden" value="<?php echo $code; ?>"/>
    </form>
    <?php echo $ok; ?></p>
  </p>
</blockquote>
</form>

</TD>
</TR>

</table>


</html>
merci bonne journée

Re: probleme de captcha

par moogli » 22 févr. 2011, 02:03

salut,

effectivement le code complet parait être une bonne idée vu que le code est fonctionnel ;)


@+

Re: probleme de captcha

par romantica » 21 févr. 2011, 22:19

bonsoir
merci pour ta réponse.
chez moi le formulaire est valide,avec code ou sans code.
veux tu que je poste la page complète pour voir si j'ai fait un erreur car moi je ne trouve rien qui cloche.
merci

Re: probleme de captcha

par charabia » 21 févr. 2011, 12:12

Bonjour,

Je n'ai pas regardé le code en détail mais je l'ai avant tout testé.

De mon côté, le formulaire ne se valide pas si le champ est vide et si le code est erroné...

probleme de captcha

par romantica » 21 févr. 2011, 11:56

bonjour,j'ai trouvé un petit script de code captcha qui est très léger et je l'ai adopté,mais mon problème est que le formulaire est validé même sans taper le code,le voici:
  <?php
    $oui = '1';
    $value = '';
    $type = 'password';
    if ( isset ($_POST['code_entre']) AND isset ($_POST['code']))
    {
        $code_entre = $_POST['code_entre'];
        $code = $_POST['code'];
        $code = $code / '368.5';
        if ($code_entre == NULL)
        {
            $ok = ' Erreur, vous n\'avez pas entré de code.';
            $oui = '0';
        }
        elseif ($code_entre != $code)
        {
            $ok = ' Erreur, mauvais code.';
            $oui = '0';
        }
        else
        {
            $ok = ' OK, le code est bon.';
            $value = 'value="' .$code. '"';
            $type = 'text';
        }
    }
    else
    {
        $ok = '';
        $oui = '0';
    }
    if ( $oui == '0' )
    {
        $code = rand('100000', '999999');
        header ('Content-type: image/png');
        $image = imagecreate('56', '20');
        $noir = imagecolorallocate($image, '0', '0', '0');
        $blanc = imagecolorallocate($image, '255', '255', '255');
        imagestring($image, '4', '4', '2', $code, $blanc);
        imagepng($image, 'code.png');
        header ('Content-type: text/html');
    }
    $code = $code * '368.5';
    ?>
    <form method="post" action="">
        <p><img src="code.png" title="Code" alt="Code"/><label for="code_entre"> Entrez le code de l'image.</label> <input type="<?php echo $type ?>" name="code_entre" id="code_entre" size="7" maxlength="6" <?php echo $value; ?>/>
        <input type="submit" value="OK"/>
        <input name="code" id="code" type="hidden" value="<?php echo $code; ?>"/>
    </form>
    <?php echo $ok; ?></p>
avez vous une idée?
merci de votre aide