Page 1 sur 1

PB validation formulaire et Captcha

Posté : 14 sept. 2007, 14:23
par Dipsy
Bonjour à tous.

J'ai un problème avec un formulaire depuis que je l'ai "sécurisé" via captcha.
En fait, à la base j'utilisai un javascript qui alertai le visiteur s'il n'avait pas rempli tel ou tel champ.
Depuis que j'ai intégré le captcha, il ne tient plus compte de ce javascript. :?:

Y a-t'il incompatibilité avec ces deux systèmes ?

Merci d'éclairer la lanterne d'un newbee.

Dipsy

Le code captcha présent dans la page du formulaire :
<?php $chaine = str_shuffle("a+b-c*d/e+f-g/h.i*j+k-l*--______-----+++++++++++++_++++++++++++++//////_////////////////////////////////////.....................????????????????????????????????m*n/o-p+q+r/s5t5u-v+w+x+y-z/A-B*C/D*E-F-G+H+I.J.K/L*M-N-O*P/Q*R/S-T*U/V/W*X/Y-Z+0-1*2/3.4+5-6*7/8.9");
$chaine = md5($chaine).';'.$chaine.';'.str_shuffle($chaine); ?>
A suivre, le javascript pour validation des champs

Code : Tout sélectionner

<script language="JavaScript"> <!-- function couleur(obj) { obj.style.backgroundColor = "#FFFFFF"; } function check() { var msg = ""; if (document.contact.nom.value == "") { msg += "Veuillez saisir votre nom.\n"; document.contact.nom.style.backgroundColor = "#f6a800"; } if (document.contact.prenom.value == "") { msg += "Veuillez saisir votre prénom.\n"; document.contact.prenom.style.backgroundColor = "#f6a800"; } if (document.contact.email.value != "") { indexAroba = document.contact.email.value.indexOf('@'); indexPoint = document.contact.email.value.indexOf('.'); if ((indexAroba < 0) || (indexPoint < 0)) { document.contact.mail.style.backgroundColor = "#f6a800"; msg += "Le mail est incorrect.\n"; } } else { document.contact.email.style.backgroundColor = "#f6a800"; msg += "Veuillez saisir votre mail.\n"; } if (document.contact.email2.value != document.contact.email.value) { msg += "Les adresses email ne concordent pas.\n"; document.contact.email2.style.backgroundColor = "#f6a800"; } if (msg == "") return(true); else { alert(msg); return(false); } } //--> </script>
et le formulaire :

Code : Tout sélectionner

<form vname="FormName" action="formulaire.php" method="post" enctype="multipart/form-data" name="form" onsubmit="return check();"> <div> <table width="550" border="0" cellspacing="5" cellpadding="0"> <tr height="10"> <td class="txt_gris" align="left" width="275" height="21">Nom* :</td> <td align="left" height="10"><input onkeyup="javascript:couleur(this);" type="text" name="nom" size="30" /></td> </tr> <tr height="10"> <td class="txt_gris" align="left" width="275" height="21">Pr&eacute;nom* :</td> <td align="left" height="10"><input onkeyup="javascript:couleur(this);" type="text" name="prenom" size="30" /></td> </tr> <tr height="10"> <td class="txt_gris" align="left" width="275" height="10">E-mail* :</td> <td align="left" height="10"><input onkeyup="javascript:couleur(this);" type="text" name="email" size="30" /></td> </tr> <tr height="10"> <td class="txt_gris" align="left" width="275" height="10">E-mail <em>(v&eacute;rification saisie)</em>*:</td> <td align="left" height="10"><input onkeyup="javascript:couleur(this);" type="text" name="email2" size="30" /></td> </tr> <tr height="10"> <td class="txt_gris" colspan="2" align="center" height="15"> <div align="center">Votre message :</div> </td> </tr> <tr> <td colspan="2" align="center"> <div align="center"> <textarea onkeyup="javascript:couleur(this);" name="message" rows="5" cols="54"></textarea></div> </td> </tr> <tr> <td class="txt_gris" valign="middle" width="275">Veuillez retaper ce code : <img src='captcha.php?shuffle=<?php echo $chaine ?>' alt='Image'/></td> <td valign="middle"><input type='text' name='code' /></td> </tr> <tr> <td colspan="2" align="center"> <div align="center"> <input type='hidden' name='sh' value='<?php echo $chaine ?>' /> <input type="submit" name="Submit" value="Envoyer" /></div> </td> </tr> </table> </div> </form>
[/php]

Posté : 14 sept. 2007, 20:04
par Ryle
Le captcha n'est rien de plus qu'une image qui apparait sur la page et un champ de saisie supplémentaire que php controlera ensuite. Il n'a donc par défaut aucun lien avec ce que tu feras sur ta page en javascript et il ne peut y avoir d'incompatibilité, tu as donc du bricoler quelque chose qui empêche ton js de fonctionner..

Déjà, que se passe-t-il ? as-tu une erreur javascript (triangle jaune en bas à gauche dans IE, ou message dans la console de FireFox ?). La fonction check est-elle bien appellée ? (une alert() au début de celle-ci te permet de le vérifier rapidement). ...

Posté : 15 sept. 2007, 11:32
par Dipsy
Merci Ryle.

En effet, tu avais raison, il s'agissait bien d'un bricolage.
A faire du copier-coller, on est sur de se planter…

L'erreur était tellement grosse. :oops:
En fait, la balise name pour mon formulaire n'avait pas le bon attribut.
A la place de name="form", il fallait écrire name="contact" qui renvoie au javascript.

Désolé de vous avoir dérangé pour ça.

Encore merci.

Dipsy