Forum > PHP > ReCaptcha sur une page PHP

ReCaptcha sur une page PHP

ok Le problème posé sur ce sujet a été résolu.
Page : 1 2
avatar de Vitoutso
Membre
# Le 05/09/2010 à 07h27
Bonjour à toutes et tous,

j'ai scrupuleusement suivi les indications pour l'installation de ReCaptcha de cet article. Cependant je peux malgré tout envoyer le formulaire sans avoir besoin de taper le code du Captcha.
Qu’est-ce que j’ai oublié ou qu’est-ce que j’ai mal fait ?
Une aide serait appréciée, merci d’avance !

Voici le code source :

  1. <?php include_once( "20100904-66f7.lib.php" ); ?>
  2. <html>
  3. <head>
  4. <title>Titre de la page</title>
  5. <!-- <meta http-equiv="Content-type" content="text/html; charset=iso-8859-1"> -->
  6. <script type="text/javascript">
  7. var RecaptchaOptions={
  8. lang: 'fr',
  9. theme: 'red'
  10. };
  11. </script>
  12. </head>
  13. <body marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
  14.  
  15. <!-- ------------------------ Begin: Your FormMail's Description ------------------------ -->
  16.  
  17. <br><br><br>
  18. <table cellspacing='16' cellpadding='0' border='0' align='center' ><tr>
  19. <td>
  20.  
  21. <font class='form_title'>Formulaire de contact</font>
  22.  
  23. </td></tr></table>
  24.  
  25. <!-- ------------------------ End: Your FormMail's Description ------------------------ -->
  26.  
  27.  
  28. <!-- ======================= Begin: Form Generated By PHP FormMail Generator ======================= -->
  29.  
  30.  
  31. <?php
  32. if( !$isHideForm ):
  33. global $sErr ;
  34. if( $sErr ) print "<br><a name='error'></a><center><font class='form_error' >$sErr</font></center><br>";
  35.  
  36. $starColor = $sErr ? "#ff0000" : "#000000";
  37. $style=" class='form_text' ";
  38. ?>
  39.  
  40. <form name="frmFormMail" action="<?php print PHP_SELF ?>" method='post' enctype='multipart/form-data'>
  41. <input type='hidden' name='formmail_submit' value='Y'>
  42. <input type='hidden' name='esh_formmail_recipient' value="adresse@monsite.com">
  43. <input type='hidden' name='esh_formmail_subject' value="Ecrivez-nous">
  44. <input type='hidden' name='esh_formmail_cc' value="">
  45. <input type='hidden' name='esh_formmail_bcc' value="">
  46. <input type='hidden' name='esh_formmail_return_subject' value="Succès de l'envoie de votre message !">
  47. <input type='hidden' name='esh_formmail_return_msg' value="Votre message est envoyé avec succès !
  48. Si celui- ci demande une réponse de notre part
  49. soyez assuré que nous vous répondrons le plus rapidement possible !
  50. Merci et à bientôt.
  51. Cordialement .
  52.  
  53. L'Equipe web">
  54. <input type='hidden' name='esh_formmail_mail_and_file' value="">
  55. <input type='hidden' name='esh_formmail_charset' value="">
  56.  
  57. <table cellspacing='16' cellpadding='0' border='0' >
  58. <tr>
  59. <td class="form_field" valign='top' align='right'>Nom </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  60. <td class="form_text">
  61. <input name="Nom" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Nom" ] ); ?>" size="40" maxlength="40">
  62. </td>
  63. </tr>
  64.  
  65. <tr>
  66. <td class="form_field" valign='top' align='right'>Prenom </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  67. <td class="form_text">
  68. <input name="Prenom" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Prenom" ] ); ?>" size="40" maxlength="40">
  69. </td>
  70. </tr>
  71.  
  72. <tr>
  73. <td class="form_field" valign='top' align='right'>E-mail </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  74. <td class="form_text">
  75. <input type="generic email" name="E-mail" value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "E-mail" ] ); ?>" class='text_box'>
  76. </td>
  77. </tr>
  78.  
  79. <tr>
  80. <td class="form_field" valign='top' align='right'>Téléphone </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  81. <td class="form_text">
  82. <input name="Telephone" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Telephone" ] ); ?>" size="20" maxlength="20">
  83. </td>
  84. </tr>
  85.  
  86. <tr>
  87. <td class="form_field" valign='top' align='right'>Adresse postale </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  88. <td class="form_text">
  89. <input name="Adresse_postale" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Adresse_postale" ] ); ?>" size="80" maxlength="120">
  90. </td>
  91. </tr>
  92.  
  93. <tr>
  94. <td class="form_field" valign='top' align='right'>Code postal </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  95. <td class="form_text">
  96. <input name="Code_postal" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Code_postal" ] ); ?>" size="10" maxlength="10">
  97. </td>
  98. </tr>
  99.  
  100. <tr>
  101. <td class="form_field" valign='top' align='right'>Ville </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  102. <td class="form_text">
  103. <input name="Ville" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Ville" ] ); ?>" size="40" maxlength="40">
  104. </td>
  105. </tr>
  106.  
  107. <tr>
  108. <td class="form_field" valign='top' align='right'>Pays </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  109. <td class="form_text">
  110. <select name="Pays" <? print $style; ?>>
  111. <option value=''>- Select -</option>
  112. <option value=" France " <?php formSelected( $HTTP_POST_VARS[ "Pays" ], " France " ); ?> > France
  113. <option value=" Royaume-Uni " <?php formSelected( $HTTP_POST_VARS[ "Pays" ], " Royaume-Uni " ); ?> > Royaume-Uni
  114. <option value=" États-Unis " <?php formSelected( $HTTP_POST_VARS[ "Pays" ], " États-Unis " ); ?> > États-Unis
  115. </select>
  116.  
  117. </td>
  118. </tr>
  119.  
  120. <tr>
  121. <td class="form_field" valign='top' align='right'>Nom de votre Assoc </td><td width='10' aligh='right' valign='top'></td>
  122. <td class="form_text">
  123. <input name="Nom_de_votre_Eglise" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Nom_de_votre_Assoc" ] ); ?>" size="80" maxlength="80">
  124. </td>
  125. </tr>
  126.  
  127. <tr>
  128. <td class="form_field" valign='top' align='right'>Site web </td><td width='10' aligh='right' valign='top'></td>
  129. <td class="form_text">
  130. <input name="Site_web" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Site_web" ] ); ?>" size="80" maxlength="80">
  131. </td>
  132. </tr>
  133.  
  134. <tr>
  135. <td class="form_field" valign='top' align='right'>Vous êtes </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  136. <td class="form_text">
  137. <select name="Vous_etes" <? print $style; ?>>
  138. <option value=''>- Select -</option>
  139. <option value="Un partenaire " <?php formSelected( $HTTP_POST_VARS[ "Vous_etes" ], "Un partenaire " ); ?> > Un partenaire
  140. <option value=" Un membre " <?php formSelected( $HTTP_POST_VARS[ "Vous_etes" ], " Un membre " ); ?> > Un membre
  141. <option value=" Un visiteur " <?php formSelected( $HTTP_POST_VARS[ "Vous_etes" ], " Un visiteur " ); ?> > Un visiteur
  142. <option value=" Autre" <?php formSelected( $HTTP_POST_VARS[ "Vous_etes" ], " Autre" ); ?> > Autre
  143. </select>
  144. </td>
  145. </tr>
  146.  
  147. <tr>
  148. <td class="form_field" valign='top' align='right'>Objet de votre message </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  149. <td class="form_text">
  150. <input name="Objet_de_votre_message" type="text" class='text_box' value="<?php print HtmlSpecialChars( $HTTP_POST_VARS[ "Objet_de_votre_message" ] ); ?>" size="80" maxlength="80">
  151. </td>
  152. </tr>
  153.  
  154. <tr>
  155. <td class="form_field" valign='top' align='right'>Votre message </td><td width='10' aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
  156. <td class="form_text">
  157. <textarea name="Votre_message" rows=10 cols=60 ><?php print htmlspecialchars( $HTTP_POST_VARS[ "Votre_message" ] ); ?></textarea>
  158.  
  159. </td>
  160. </tr>
  161.  
  162.  
  163. <tr><td colspan=3 align='center'>
  164. <?php
  165. require_once('recaptchalib.php'); // Vérifier que l'URL relative correspond à l'emplacement du fichier (adapter si nécessaire)
  166. $publickey = "clé"; // Utiliser la clé que vous avez eu lors de l'inscription sur recaptcha.net
  167. echo recaptcha_get_html($publickey); // Affiche le captcha
  168.  
  169.  
  170. $privatekey = "clé"; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  171. $resp = recaptcha_check_answer ($privatekey,
  172. $_SERVER["REMOTE_ADDR"],
  173. $_POST["recaptcha_challenge_field"],
  174. $_POST["recaptcha_response_field"]);
  175.  
  176. if (!$resp->is_valid) { // Test si le captcha a bien été rempli
  177. // Si le captcha n'est pas valide
  178. echo 'Desoler, le captcha antispam n\'est pas valide. Veuillez recommencer';
  179. }
  180. else{
  181. // Si le captcha est valide
  182. // Ici, utiliser votre code PHP pour traiter le formulaire
  183. }
  184. ?><br>
  185. <input type='submit' value='Envoyer'> &nbsp;&nbsp; <input type='button' value='Annuler' onClick="location.href='/';"></td></tr>
  186. </table>
  187.  
  188. </form>
  189.  
  190. <!-- ======================= end: ======================= -->
  191.  
  192.  
  193. <?php
  194. if( $sErr ) print "<script language='javascript' type='text/javascript'>location.href='#error';</script>";;;
  195.  
  196. else: //!$isHideForm
  197. print( "<br><br><hr><center><b>Your form has been sent. Thank you.</b><br><br><input type='button' value='Home' onclick=\"location.href='/';\"></center><br><br>" );
  198. endif; //!$isHideForm
  199. ?>
  200. <!-- -------------------------------------- copy RIGHT -------------------------------------- -->
  201.  
  202. <br><br><br><br>
  203.  
  204. <div align="right" class='copyright'>
  205. <b>Generated by : </b>
  206. <a href="http://phpfmg.sourceforge.net" target="_blank">phpFormMail Generator</a> V1.0 - A tool to create ready-to-use web forms in a flash! &nbsp;&nbsp;
  207. </div>
  208. <br><br><br>
  209. </body>
  210. </html>


J'ai, bien entendu, enlevé les clés public et privé avant de coller le code ici.
Je ne connais pas le PHP ce qui me rend la tâche encore plus ardu !
Merci pour votre aide.
Cordialement à toutes et tous !

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
avatar de Tony_
Administrateur
# Le 05/09/2010 à 14h52
Bonjour.
Tout d'abord je tiens à préciser que j'ai un peu coupé certains passages de votre code pour se concentrer sur l'essentiel (c'est long à lire smiley ).

Voici quelques informations pour débuger le code:

Emplacement de la librairie

Êtes-vous sur que la librairie recaptchalib.php est située dans le même répertoire que ce fichier? Si c'est dans un sous-dossier il faut adapter le code "require_once('recaptchalib.php');".

Débugage

Voici une technique pour comprendre où le problème peut se baser. Il faut commencer par créer un fichier de sauvegarde de votre code pour éviter les erreurs. Puis dans votre code, il faut supprimer les 4 ou 5 lignes situées entre "End:" et "COPY RIGHT". Il s'agit du code de validation, il est supprimé pour juste s'occuper de recaptcha.
A l'emplacement de la ligne "// Ici, utiliser votre code PHP pour traiter le formulaire" ajouter le code suivant:
  1. echo "ici, le code est valide";

Puis finalement tester le formulaire en essayant de répondre correctement au captcha et en faisant des fautes volontaire. Normalement vous aurez deux types de messages: "Desoler, le captcha antispam n'est pas valide." ou "ici, le code est valide".
Si ce n'est pas le cas, dites-le sur ce sujet.

Bref, essayez cette procédure et indiquez ici si tout fonctionne correctement. Si tout fonctionnement parfaitement je vous donnerais la marche à suivre suivante.

Bon courage.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 06/09/2010 à 11h49
Bonjour,

et merci pour cette réponse rapide ! Oui en effet le code est très long.. smiley ! Merci en tout cas de t'intéresser à mon problème. (53 ans mais toujours jeune d'esprit, alors il faut me tutoyer..., merci !) smiley
J'ai suivi les indications pour tenter de résoudre le problème et maintenant le formulaire ne s'ouvre plus, j'ai un message d'erreur lorsque je tente de l'ouvrir :

Parse error: syntax error, unexpected $end in /homepages/38/d335817435/htdocs/formulaire_icfm/20100904-66f7.php on line 465

Il se trouve que cette ligne est la balise de fermeture </html>, juste après </body>

Pour ce qui concerne le chemin de "recaptchalib.php", le fichier est effectivement dans le même répertoire.

Que faire...?

Merci pour la réponse.

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
avatar de Tony_
Administrateur
# Le 06/09/2010 à 13h18
S'il y a un problème à la dernière ligne c'est qu'il doit manquer un symbole "}" quelque part. Je ne sais pas si tu a compris un peu quelques informations de bases en PHP, mais j'explique rapidement:
  1. if (condition) {
  2. // liste de procédures à effectuer si "condition" est respecté
  3. } else {
  4. // liste d'autres procédure à effectuer si "condition" n'est pas respecté
  5. }

Dans cet exemple, s'il manque le "}" de fin cela va générer une erreur.

Je pense avoir déceler l'erreur. Essayer de remplacer la fin par le code suivant:
  1. <tr><td colspan=3 align='center'>
  2. <?php
  3. require_once('recaptchalib.php'); // Vérifier que l'URL relative correspond à l'emplacement du fichier (adapter si nécessaire)
  4. $publickey = "clé"; // Utiliser la clé que vous avez eu lors de l'inscription sur recaptcha.net
  5. $privatekey = "clé"; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  6.  
  7. echo recaptcha_get_html($publickey); // Affiche le captcha
  8. ?><br>
  9. <input type='submit' value='Envoyer'> &nbsp;&nbsp; <input type='button' value='Annuler' onClick="location.href='/';"></td></tr>
  10. </table>
  11.  
  12. </form>
  13.  
  14. <!-- ======================= end: ======================= -->
  15.  
  16.  
  17. <?php
  18. $resp = recaptcha_check_answer ($privatekey,
  19. $_SERVER["REMOTE_ADDR"],
  20. $_POST["recaptcha_challenge_field"],
  21. $_POST["recaptcha_response_field"]);
  22.  
  23. if (!$resp->is_valid) { // Test si le captcha a bien été rempli
  24. // Si le captcha n'est pas valide
  25. echo 'Desoler, le captcha antispam n\'est pas valide. Veuillez recommencer';
  26. } else {
  27. if( $sErr ) print "<script language='javascript' type='text/javascript'>location.href='#error';</script>";
  28. else: //!$isHideForm
  29. print( "<br><br><hr><center><b>Your form has been sent. Thank you.</b><br><br><input type='button' value='Home' onclick=\"location.href='/';\"></center><br><br>" );
  30. endif; //!$isHideForm
  31. }
  32. ?>
  33. <!-- -------------------------------------- copy RIGHT -------------------------------------- -->
  34. <br><br><br><br>
  35.  
  36. <div align="right" class='copyright'>
  37. <b>Generated by : </b>
  38. <a href="http://phpfmg.sourceforge.net" target="_blank">phpFormMail Generator</a> V1.0 - A tool to create ready-to-use web forms in a flash! &nbsp;&nbsp;
  39. </div>
  40. <br><br><br>
  41. </body>
  42. </html>


J'espère que ça va résoudre le problème.
Bon courage.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 06/09/2010 à 20h05
Bonsoir

je viens de faire l'essai en collant le code que tu as modifié, et bien sur en y insérant également les clés privées et publiques. Cette fois j'ai cette erreur là :
Parse error: syntax error, unexpected ':' in /homepages/38/d335817435/htdocs/formulaire_icfm/20100904-66f7.php on line 190

Voici le code avec les n° de ligne pour que tu puisses mieux voir :

  1. 163 <tr><td colspan=3 align='center'>
  2. 164 <?php
  3. 165 require_once('recaptchalib.php'); // Vérifier que l'URL relative correspond à l'emplacement du fichier (adapter si nécessaire)
  4. 166 $publickey = "clé"; // Utiliser la clé que vous avez eu lors de l'inscription sur recaptcha.net
  5. 167 $privatekey = "clé"; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  6. 168
  7. 169 echo recaptcha_get_html($publickey); // Affiche le captcha
  8. 170 ?><br>
  9. 171 <input type='submit' value='Envoyer'> &nbsp;&nbsp; <input type='button' value='Annuler' onClick="location.href='/';"></td></tr>
  10. 172 </table>
  11. 173
  12. 174 </form>
  13. 175
  14. 176 <!-- ======================= end: ======================= -->
  15. 177
  16. 178
  17. 179 <?php
  18. 180 $resp = recaptcha_check_answer ($privatekey,
  19. 181 $_SERVER["REMOTE_ADDR"],
  20. 182 $_POST["recaptcha_challenge_field"],
  21. 183 $_POST["recaptcha_response_field"]);
  22. 184
  23. 185 if (!$resp->is_valid) { // Test si le captcha a bien été rempli
  24. 186 // Si le captcha n'est pas valide
  25. 187 echo 'Desoler, le captcha antispam n\'est pas valide. Veuillez recommencer';
  26. 188 } else {
  27. 189 if( $sErr ) print "<script language='javascript' type='text/javascript'>location.href='#error';</script>";
  28. 190 else: //!$isHideForm
  29. 191 print( "<br><br><hr><center><b>Your form has been sent. Thank you.</b><br><br><input type='button' value='Home' onclick=\"location.href='/';\"></center><br><br>" );
  30. 192 endif; //!$isHideForm
  31. 193 }
  32. 194 ?>
  33. 195 <!-- -------------------------------------- copy RIGHT -------------------------------------- -->
  34. 196 <br><br><br><br>
  35. 197
  36. 198 <div align="right" class='copyright'>
  37. 199 <b>Generated by : </b>
  38. 200 <a href="http://phpfmg.sourceforge.net" target="_blank">phpFormMail Generator</a> V1.0 - A tool to create ready-to-use web forms in a flash! &nbsp;&nbsp;
  39. 201 </div>
  40. 202 <br><br><br>
  41. 203 </body>
  42. 204 </html>


D'autre part je pense avoir compris l'exemple que tu me donnes, cependant il faut que je me mette à écrire un petit code pour bien l'encrer en mémoire et surtout bien l'assimiler. Comme en ce moment j'ai l'esprit quelque peu embrouillé avec ce fichu formulaire je préfère attendre d'être un peu plus relaxe.

Désolé de t'accaparer avec mon formulaire, j'apprécie beaucoup ton aide. Mais je suis persévérant et je suis prêt à beaucoup de patience pour arriver à faire mettre à genou ce formulaire... smiley smiley afin qu'il fonctionne (un peu d'humour) !!

Cordialement,

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
avatar de Tony_
Administrateur
# Le 06/09/2010 à 22h07
Me revoici avec un bout de code qui marche probablement mieux. Je m'étais trompé de ligne pour placer l'accolade fermante (le symbole "}"). Il faut intervertir le symbole "}" et la ligne "endif", comme montré ci-dessous:

  1. if (!$resp->is_valid) { // Test si le captcha a bien été rempli
  2. // Si le captcha n'est pas valide
  3. echo 'Desoler, le captcha antispam n\'est pas valide. Veuillez recommencer';
  4. } else {
  5. if( $sErr )
  6. print "<script language='javascript' type='text/javascript'>location.href='#error';</script>";
  7. else //!$isHideForm
  8. print( "<br><br><hr><center><b>Your form has been sent. Thank you.</b><br><br><input type='button' value='Home' onclick=\"location.href='/';\"></center><br><br>" );
  9. }
  10.  
  11. endif; //!$isHideForm


Cette fois-ci je pense que ça va mieux fonctionner!
Affaire à suivre.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 06/09/2010 à 23h01
Bonsoir,
cette fois-ci le formulaire apparait sans erreur ! Je l'ai rempli d'abord en ne tapant pas le code de vérification du Captcha et ensuite en le tapant.
Dans les deux cas le message est parti et je l'ai reçu. Par contre chaque fois que le message part je me retrouve avec une page blanche avec seulement le titre du formulaire et le copyright de "phpFormMail Generator" et rien d'autre.
Résultat:

1°) Le Captcha ne sert à rien parce que le message part sans devoir passer par le code de vérification

2°) Je n'ai rien qui m'indique que le message est parti

Mais c'est déjà très bien que tu es pu résoudre ce problème. Te sens-tu le courage de continuer à m'aider encore ?
Merci beaucoup pour ta patience !

Il faut que je prenne du temps lorsque j'en aurai fini avec ce formulaire pour me mettre à maîtriser le PHP !

Cordialement.

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
avatar de Tony_
Administrateur
# Le 07/09/2010 à 00h33
Ok, une nouvelle fois je comprend un peu mieux. En fait il manque un bout de code. Cette page appelle "20100904-66f7.lib.php" (cf. la première ligne de code) et c'est ce fichier qui semble contenir le code pour traiter le formulaire. J'ai téléchargé ce fichier et je l'ai parcouru rapidement et il s'avère que ça devient assez complexe d'essayer d'ajouter ReCaptcha dans ce fichier.
Je dois avouer que cette fois-ci je ne vais pas avoir assez de temps et d'énergie pour modifier la source d'une bibliothèque (le fichier fait tout de même 1748 lignes de codes).

Ce que je peux vous conseiller c'est des tutoriaux pour faire sois-même un formulaire de contact, grâce à la requête Google "php formulaire de contact". Ces tutoriaux ont diverses avantages:
  • Les méthodes décrites dans ces tutoriaux sont beaucoup plus faciles à adapter
  • Recaptcha peut y être inséré beaucoup plus facilement
  • Les messages seront personnalisé et exclusivement en français (contrairement aux messages d'erreurs actuels en Anglais)

Si tu essaie un des tutoriaux proposé dans Google et que tu a des difficulté à insérer Recaptcha, là je suis plus à même de t'aider.
Et puis indirectement le code source sera beaucoup plus propre.

J'espère que cela ne sera pas trop contraignant.
Bon courage.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de stc
Membre
# Le 07/09/2010 à 03h47
Pour un code captcha c facile :
en premier avoir un tableau de caractères :
  1. $array_chars=array('a','b','c','d','f','g','h','i','j','k','l','m','n','o','p',
  2. 'q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');

après créer le code avant l'affichage du formulaire :
  1. <?php
  2. $_SESSION['captcha']='';
  3. for($i=1;$i<=6;$i++)
  4. $_SESSION['captcha'].=$array_chars[rand(0, count($array_chars)-1)];
  5. ?>

inclure ce code pour qu'il soit visible dans le formulaire (avec un champ texte pour que l'internaute le recopie :
  1. <div>
  2. <span class="captcha"><?php echo $_SESSION['captcha']; ?></span>
  3. <span>&rarr;Copier le code SVP&rarr;</span>
  4. <input type="text" name="captcha" value="" size="6" maxlength="6" />
  5. </div>

en suite verifier le code apres la validation du formulaire :

  1. $capt=$_POST['captcha'];
  2. if($capt!=$_SESSSION['captcha'])
  3. {
  4. //le code n'est pas bon
  5. }

Conseil : régénérer le code a chaque validation du formulaire (si on doit ré-afficher le formulaire pour une raison ou une autre)
Sinon ça fait 2 ans que j'utilise cette méthode j'ai jamais été spammé
avatar de Tony_
Administrateur
# Le 07/09/2010 à 13h24
Moi au début j'utilisais des images dans lequel un code aléatoire était inscrit. Les lettres était en italique et était barrée (pour tenter de rendre la lecture plus difficile) et j'ai pourtant été spammé. Tes sites qui utilisaient cette méthode était-ils populaire?
Personnellement, j'utilise maintenant recaptcha et je n'ai presque plus de problème. En plus, ce n'est pas foncièrement plus compliqué que le code que tu a présenté. smiley
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 07/09/2010 à 16h28
Bonjour à tous,
bon, j'ai longtemps hésité entre ta solution et celle de STC. Je me suis donc décidé à faire une autre tentative avec un formulaire que j'ai généré sur le site de GE-NET.
Voici le code avec le premier bout de code du ReCaptcha de Google (j'ai isolé la feuille de style dans un autre fichier) :
  1. <!DOCTYPE html public "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <?php
  3. // Couleur du texte des champs si erreur saisie utilisateur
  4. $color_font_warn="#FF0000";
  5. // Couleur de fond des champs si erreur saisie utilisateur
  6. $color_form_warn="#FFCC66";
  7. // Ne rien modifier ci-dessous si vous n’êtes pas certain de ce que vous faites !
  8. $list['f_9']=array("Sélectionnez","Afghanistan","Albania","Algeria","Andorra","Antigua and Barbuda","etc...");
  9. $list['f_11']=array("Sélectionnez","Un partenaire","Un membre bienfaiteur","Un visiteur","Autre");
  10. if(isset($_POST['submit'])){
  11. $erreur="";
  12. // Nettoyage des entrées
  13. while(list($var,$val)=each($_POST)){
  14. if(!is_array($val)){
  15. $$var=strip_tags($val);
  16. }else{
  17. while(list($arvar,$arval)=each($val)){
  18. $$var[$arvar]=strip_tags($arval);
  19. }
  20. }
  21. }
  22. // Formatage des entrées
  23. $f_1=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_1)));
  24. $f_2=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_2)));
  25. $f_3=strip_tags(trim($f_3));
  26. $f_4=trim(eregi_replace("[^0-9\ +]", "", $f_4));
  27. $f_5=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_5)));
  28. $f_6=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_6)));
  29. $f_7=trim(eregi_replace("[^0-9+]", "", $f_7));
  30. $f_8=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_8)));
  31. $f_10=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_10)));
  32. $f_12=trim(ucwords(eregi_replace("[^a-zA-Z0-9éèàäö\ -]", "", $f_12)));
  33. // Verification des champs
  34. if(strlen($f_1)<2){
  35. $erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
  36. $errf_1=1;
  37. }
  38. if(strlen($f_2)<2){
  39. $erreur.="<li><span class='txterror'>Le champ &laquo; Prénom &raquo; est vide ou incomplet.</span>";
  40. $errf_2=1;
  41. }
  42. if(strlen($f_3)<2){
  43. $erreur.="<li><span class='txterror'>Le champ &laquo; E-mail &raquo; est vide ou incomplet.</span>";
  44. $errf_3=1;
  45. }else{
  46. if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
  47. '@'.
  48. '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
  49. '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
  50. $f_3)){
  51. $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
  52. $errf_3=1;
  53. }
  54. }
  55. if(strlen($f_4)<2){
  56. $erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone &raquo; est vide ou incomplet.</span>";
  57. $errf_4=1;
  58. }
  59. if(strlen($f_5)<2){
  60. $erreur.="<li><span class='txterror'>Le champ &laquo; Adresse postale &raquo; est vide ou incomplet.</span>";
  61. $errf_5=1;
  62. }
  63. if(strlen($f_7)<2){
  64. $erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
  65. $errf_7=1;
  66. }
  67. if(strlen($f_8)<2){
  68. $erreur.="<li><span class='txterror'>Le champ &laquo; Ville &raquo; est vide ou incomplet.</span>";
  69. $errf_8=1;
  70. }
  71. if($f_9==0){
  72. $erreur.="<li><span class='txterror'>Le champ &laquo; Pays &raquo; n'a pas été défini.</span>";
  73. $errf_9=1;
  74. }
  75. if($f_11==0){
  76. $erreur.="<li><span class='txterror'>Le champ &laquo; Vous êtes &raquo; n'a pas été défini.</span>";
  77. $errf_11=1;
  78. }
  79. if(strlen($f_12)<2){
  80. $erreur.="<li><span class='txterror'>Le champ &laquo; Objet de votre message &raquo; est vide ou incomplet.</span>";
  81. $errf_12=1;
  82. }
  83. if(strlen($f_13)<2){
  84. $erreur.="<li><span class='txterror'>Le champ &laquo; Votre message &raquo; est vide ou incomplet.</span>";
  85. $errf_13=1;
  86. }
  87. if($erreur==""){
  88. // Création du message
  89. $titre="Message de votre site";
  90. $tete="From:Site@http://site.com/Formulaire/formulaire.php\n";
  91. $corps.="Nom : ".$f_1."\n";
  92. $corps.="Prénom : ".$f_2."\n";
  93. $corps.="E-mail : ".$f_3."\n";
  94. $corps.="Téléphone : ".$f_4."\n";
  95. $corps.="Adresse postale : ".$f_5."\n";
  96. $corps.="Adresse (suite) : ".$f_6."\n";
  97. $corps.="Code postal : ".$f_7."\n";
  98. $corps.="Ville : ".$f_8."\n";
  99. $corps.="Pays : ".$list['f_9'][$f_9]."\n";
  100. $corps.="Nom de votre Eglise : ".$f_10."\n";
  101. $corps.="Vous êtes : ".$list['f_11'][$f_11]."\n";
  102. $corps.="Objet de votre message : ".$f_12."\n";
  103. $corps.="Votre message : ".$f_13."\n";
  104. if(mail("machin@truc.com", $titre, stripslashes($corps), $tete)){
  105. $ok_mail="true";
  106. }else{
  107. $erreur.="<li><span class='txterror'>Une erreur est survenue lors de l'envoi du message, veuillez refaire une tentative.</span>";
  108. }
  109. }
  110. }
  111. ?>
  112. <html xmlns="http://www.w3.org/1999/xhtml">
  113. <head>
  114. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  115. <title>Formulaire</title>
  116. <strong><script type="text/javascript">
  117. var RecaptchaOptions={
  118. lang: 'fr',
  119. theme: 'red'
  120. };
  121. </script></strong>
  122. <link href="../styles_css/screen.css" rel="stylesheet" type="text/css" />
  123. </head>
  124.  
  125. <body>
  126. <? if($ok_mail=="true"){ ?>
  127. <table width='100%' border='0' cellspacing='1' cellpadding='1'>
  128. <tr><td><span class='txtform'>Le message ci-dessous nous a bien été transmis, et nous vous en remercions.</span></td></tr>
  129. <tr><td>&nbsp;</td></tr>
  130. <tr><td><tt><?echo nl2br(stripslashes($corps));?></tt></td></tr>
  131. <tr><td>&nbsp;</td></tr>
  132. <tr><td><span class='txtform'>Nous allons y donner suite dans les meilleurs délais.<br />A bientôt.</span></td></tr>
  133. </table>
  134. <? }else{ ?>
  135. <form action='<? echo $PHP_SELF ?>' method='post' name='Form' id="Form">
  136. <table width='700' border='0' align="center" cellpadding='2' cellspacing='2' class="Tableau">
  137. <? if($erreur){ ?><tr><td colspan='2' bgcolor='red'><span class='txterror'><font color='white'><b>&nbsp;ERREUR, votre message n'a pas été transmis</b></font></span></td></tr><tr><td colspan='2'><ul><?echo$erreur?></ul></td></tr><?}?>
  138. <tr><td colspan='2' align="center" bgcolor="#0033FF"><span class='txterror'>Les champs marqué d'un </span><span class="asterisque">*</span><span class='txterror'> sont
  139. obligatoires</span></td></tr>
  140. <tr>
  141. <td colspan='2'>&nbsp;</td>
  142. </tr>
  143. <tr><td colspan="2" align='left'><span class='txtform'>Nom</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  144. <tr>
  145. <td colspan="2" align='left'>
  146. <input name='f_1' type='text' id="f_1" style='width:200 <?if($errf_1==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_1);?>' size='35' maxlength="30" border='0' />
  147. <br />
  148. <br />
  149. </td>
  150. </tr>
  151. <tr><td colspan="2" align='left'><span class='txtform'>Prénom</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  152. <tr>
  153. <td colspan="2" align='left'>
  154. <input name='f_2' type='text' id="f_2" style='width:200 <?if($errf_2==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_2);?>' size='35' maxlength="25" border='0' />
  155. <br />
  156. <br />
  157. </td>
  158. </tr>
  159. <tr><td colspan="2" align='left'><span class='txtform'>E-mail</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  160. <tr>
  161. <td colspan="2" align='left'>
  162. <input name='f_3' type='text' style='width:200 <?if($errf_3==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_3);?>' size='35' maxlength="30" border='0' />
  163. <br />
  164. <br />
  165. </td>
  166. </tr>
  167. <tr>
  168. <td colspan="2" align='left'><span class='txtform'>Téléphone</span><span class="asterisque">*</span> <span class='txtform'> :</span></td>
  169. </tr>
  170. <tr>
  171. <td colspan="2" align='left'>
  172. <input name='f_4' type='text' style='width:200 <?if($errf_4==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_4);?>' size='35' maxlength="17" border='0' />
  173. <br />
  174. <br />
  175. </td>
  176. </tr>
  177. <tr><td colspan="2" align='left'><span class='txtform'>Adresse postale</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  178. <tr>
  179. <td colspan="2" align='left'>
  180. <input name='f_5' type='text' style='width:200 <?if($errf_5==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_5);?>' size='35' maxlength="35" border='0' />
  181. <br />
  182. <br />
  183. </td>
  184. </tr>
  185. <tr><td colspan="2" align='left'><span class='txtform'>Adresse (suite) :</span></td></tr>
  186. <tr>
  187. <td colspan="2" align='left'>
  188. <input name='f_6' type='text' style='width:200 <?if($errf_6==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_6);?>' size='35' maxlength="25" border='0' />
  189. </td>
  190. </tr>
  191. <tr><td colspan="2" align='left'><span class='txtform'>Code postal</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  192. <tr>
  193. <td colspan="2" align='left'>
  194. <input name='f_7' type='text' style='width:200 <?if($errf_7==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_7);?>' size='35' maxlength="5" border='0' />
  195. <br />
  196. <br />
  197. </td>
  198. </tr>
  199. <tr><td colspan="2" align='left'><span class='txtform'>Ville</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  200. <tr>
  201. <td colspan="2" align='left'>
  202. <input name='f_8' type='text' style='width:200 <?if($errf_8==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_8);?>' size='35' maxlength="30" border='0' />
  203. <br />
  204. <br />
  205. </td>
  206. </tr>
  207. <tr><td colspan="2" align='left'><span class='txtform'>Pays</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  208. <tr>
  209. <td colspan="2" align='left'>
  210. <select style='width:200 <?if($errf_9==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_9' size='1'>
  211. <? for($id=0;$id<count($list['f_9']);$id++){
  212. if($id==$f_9){$ct="selected";}
  213. print("<option ".$ct." value=".$id.">".$list['f_9'][$id]."</option>");
  214. unset($ct);
  215. }?>
  216. </select>
  217. <br />
  218. <br />
  219. </td>
  220. </tr>
  221. <tr><td colspan="2" align='left'><span class='txtform'>Nom de votre Eglise :</span></td></tr>
  222. <tr>
  223. <td colspan="2" align='left'>
  224. <input name='f_10' type='text' style='width:200 <?if($errf_10==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_10);?>' size='35' maxlength="35" border='0' />
  225. <br />
  226. <br />
  227. </td>
  228. </tr>
  229. <tr><td colspan="2" align='left'><span class='txtform'>Vous êtes</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  230. <tr>
  231. <td colspan="2" align='left'>
  232. <select style='width:200 <?if($errf_11==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_11' size='1'>
  233. <? for($id=0;$id<count($list['f_11']);$id++){
  234. if($id==$f_11){$ct="selected";}
  235. print("<option ".$ct." value=".$id.">".$list['f_11'][$id]."</option>");
  236. unset($ct);
  237. }?>
  238. </select>
  239. <br />
  240. <br />
  241. </td>
  242. </tr>
  243. <tr><td colspan="2" align='left'><span class='txtform'>Objet de votre message</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  244. <tr>
  245. <td colspan="2" align='left'>
  246. <input name='f_12' type='text' style='width:200 <?if($errf_12==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' value='<?echo stripslashes($f_12);?>' size='35' maxlength="35" border='0' />
  247. <br />
  248. <br />
  249. </td>
  250. </tr>
  251. <tr><td colspan="2" align='left'><span class='txtform'>Votre message</span><span class="asterisque">*</span><span class='txtform'> :</span></td></tr>
  252. <tr>
  253. <td colspan="2" align='left'>
  254. <textarea style='width:360 <?if($errf_13==1){print("; background-color: ".$color_form_warn."; color: ".$color_font_warn);}?>;' name='f_13' rows='10' cols='80'><?echo$f_13?></textarea>
  255. <br />
  256. <br />
  257. </td></tr>
  258. <tr>
  259. <td colspan="2" align='left'>
  260. <strong><?php
  261. require_once('recaptchalib.php'); // Vérifier que l'URL relative correspond à l'emplacement du fichier (adapter si nécessaire)
  262. $publickey = "clé publique"; // Utiliser la clé que vous avez eu lors de l'inscription sur recaptcha.net
  263. echo recaptcha_get_html($publickey); // Affiche le captcha
  264. ?></strong>
  265. </td>
  266. </tr>
  267. <tr>
  268. <td width="30%" align='left'>
  269. <label for="Effacer"></label>
  270. <input type="reset" name="Effacer" id="Effacer" value="Réinitialiser" />
  271. </td>
  272. <td align='left'>
  273. <input type='submit' name='submit' value='Envoyer' border='0' />
  274. </td>
  275. </tr>
  276. <tr>
  277. <td colspan="2" align='left'>&nbsp;</td>
  278. </tr>
  279. </table>
  280. </form>
  281. <? } ?>
  282. </body>
  283. </html>


Maintenant où dois-je mettre le second code, c'est à dire celui-ci :
  1. <?php
  2. require_once('recaptchalib.php'); // Ne pas réafficher cette ligne dans le cas où ce code est sur la même page que le formulaire
  3. $privatekey = "..."; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  4. $resp = recaptcha_check_answer ($privatekey,
  5. $_SERVER["REMOTE_ADDR"],
  6. $_POST["recaptcha_challenge_field"],
  7. $_POST["recaptcha_response_field"]);
  8.  
  9. if (!$resp->is_valid) { // Test si le captcha a bien été rempli
  10. // Si le captcha n'est pas valide
  11. echo 'Oups, le captcha antispam n\'est pas valide. Veuillez recommencer';
  12. }
  13. else{
  14. // Si le captcha est valide
  15. // Ici, utiliser votre code PHP pour traiter le formulaire
  16. }
  17. ?>


Merci d'avance.
Cordialement,

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
avatar de Tony_
Administrateur
# Le 07/09/2010 à 19h25
Ok, impeccable, ce code est plus facile à adapter pour y insérer ReCaptcha.

De la ligne 33 jusqu'à 86, il y a des conditions qui vérifie si tous les champs obligatoires ont été remplis. Ce qu'il faut faire c'est rajouter une condition (aux alentours de la ligne 86) qui vérifie si le captcha est correct. Voici un exemple de code à utiliser:

  1. require_once('recaptchalib.php'); // Ne pas réafficher cette ligne dans le cas où ce code est sur la même page que le formulaire
  2. $privatekey = "..."; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net
  3. $resp = recaptcha_check_answer ($privatekey,
  4. $_SERVER["REMOTE_ADDR"],
  5. $_POST["recaptcha_challenge_field"],
  6. $_POST["recaptcha_response_field"]);
  7.  
  8. if (!$resp->is_valid) {
  9. // Si le captcha n'est pas valide
  10. $erreur.="<li><span class='txterror'>Oups, le captcha antispam n'est pas valide. Veuillez recommencer</span>";
  11. $errf_14=1;
  12. }


Est-ce que ça fonctionne correctement?
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de Vitoutso
Membre
# Le 07/09/2010 à 19h54
Non, ça ne fonctionne pas ! Mais je n'ai peut-être pas mis le code comme il faut...!

Voici l'erreur qui s'affiche au lieu d'avoir le formulaire :
Fatal error: Call to undefined function: recaptcha_check_answer() in /homepages/38/d335817435/htdocs/FormulaireICFM/formulaire_icfm.php on line 89

Je te colle le code comme il se trouve sur la page de mon logiciel avec les n° de ligne aux mêmes endroits :
  1. 33 // Verification des champs
  2. 34 if(strlen($f_1)<2){
  3. 35 $erreur.="<li><span class='txterror'>Le champ &laquo; Nom &raquo; est vide ou incomplet.</span>";
  4. 36 $errf_1=1;
  5. 37 }
  6. 38 if(strlen($f_2)<2){
  7. 39 $erreur.="<li><span class='txterror'>Le champ &laquo; Prénom &raquo; est vide ou incomplet.</span>";
  8. 40 $errf_2=1;
  9. 41 }
  10. 42 if(strlen($f_3)<2){
  11. 43 $erreur.="<li><span class='txterror'>Le champ &laquo; E-mail &raquo; est vide ou incomplet.</span>";
  12. 44 $errf_3=1;
  13. 45 }else{
  14. 46 if(!ereg('^[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+'.
  15. 47 '@'.
  16. 48 '[-!#$%&\'*+\/0-9=?A-Z^_`a-z{|}~]+\.'.
  17. 49 '[-!#$%&\'*+\./0-9=?A-Z^_`a-z{|}~]+$',
  18. 50 $f_3)){
  19. 51 $erreur.="<li><span class='txterror'>La syntaxe de votre adresse e-mail n'est pas correcte.</span>";
  20. 52 $errf_3=1;
  21. 53 }
  22. 54 }
  23. 55 if(strlen($f_4)<2){
  24. 56 $erreur.="<li><span class='txterror'>Le champ &laquo; Téléphone &raquo; est vide ou incomplet.</span>";
  25. 57 $errf_4=1;
  26. 58 }
  27. 59 if(strlen($f_5)<2){
  28. 60 $erreur.="<li><span class='txterror'>Le champ &laquo; Adresse postale &raquo; est vide ou incomplet.</span>";
  29. 61 $errf_5=1;
  30. 62 }
  31. 63 if(strlen($f_7)<2){
  32. 64 $erreur.="<li><span class='txterror'>Le champ &laquo; Code postal &raquo; est vide ou incomplet.</span>";
  33. 65 $errf_7=1;
  34. 66 }
  35. 67 if(strlen($f_8)<2){
  36. 68 $erreur.="<li><span class='txterror'>Le champ &laquo; Ville &raquo; est vide ou incomplet.</span>";
  37. 69 $errf_8=1;
  38. 70 }
  39. 71 if($f_9==0){
  40. 72 $erreur.="<li><span class='txterror'>Le champ &laquo; Pays &raquo; n'a pas été défini.</span>";
  41. 73 $errf_9=1;
  42. 74 }
  43. 75 if($f_11==0){
  44. 76 $erreur.="<li><span class='txterror'>Le champ &laquo; Vous êtes &raquo; n'a pas été défini.</span>";
  45. 77 $errf_11=1;
  46. 78 }
  47. 79 if(strlen($f_12)<2){
  48. 80 $erreur.="<li><span class='txterror'>Le champ &laquo; Objet de votre message &raquo; est vide ou incomplet.</span>";
  49. 81 $errf_12=1;
  50. 82 }
  51. 83 if(strlen($f_13)<2){
  52. 84 $erreur.="<li><span class='txterror'>Le champ &laquo; Votre message &raquo; est vide ou incomplet.</span>";
  53. 85 $errf_13=1;
  54. 86 }
  55. 87 if($erreur==""){
  56. 88 <strong>$privatekey = "clé privée"; // Utiliser la clé privée qui est donnée sur votre compte recaptcha.net</strong>
  57. 89 <strong>$resp = recaptcha_check_answer ($privatekey,</strong>
  58. 90 <strong>$_SERVER["REMOTE_ADDR"],</strong>
  59. 91 <strong>$_POST["recaptcha_challenge_field"],</strong>
  60. 92 <strong>$_POST["recaptcha_response_field"]);</strong>
  61. 93
  62. 94 <strong>if (!$resp->is_valid) {</strong>
  63. 95 <strong>// Si le captcha n'est pas valide</strong>
  64. 96 <strong>$erreur.="<li><span class='txterror'>Oups, le captcha antispam n'est pas valide. Veuillez recommencer</span>";</strong>
  65. 97 <strong>$errf_14=1;</strong>
  66. 98 <strong>}</strong>
  67. 99 // Création du message
  68. 100 $titre="Message de votre site";


Que fait-on ???

A +

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
avatar de stc
Membre
# Le 07/09/2010 à 20h09
apparemment il ne trouve pas la fonction :
  1. recaptcha_check_answer()
avatar de Vitoutso
Membre
# Le 07/09/2010 à 20h23
Ah..! Tu m'en diras tant ! Moi qui suis un novice en PHP, je commence tout juste à comprendre quelques petits bouts de code..! Je bidouilles le html et xhtml depuis quelques années sans avoir pris conscience que le php me serait utile un jour. Enfin, heureusement qu'il y a des volontaires comme vous pour aider les novices !

Et c'est quel fonction qu'il ne trouve pas ce Captcha ?

Patience et longueur de temps ne font ni que force, ni que rage...! Je ne sais pas qui disait cela mais je crois que ça si prête énormément !

A+

Vitoutso
Aider son prochain c'est donner sans rien attendre en retour !
Page : 1 2