FORUM

forum / PHP / comment inserer un captcha dans un formulaire

Vous n êtes pas connecté

Page :1 2

comment inserer un captcha dans un formulaire

Auteurs Messages
luc Posté à 09h47 le 19 Feb 14

Membre inscrit le 15/02/2014
Messages : 8
Localisation :

comment inserer un captcha sur le site


said Posté à 18h43 le 19 Feb 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :

Salut !
Pour ce qui est captcha, on a au moins deux options :

  • Soit le coder soi-même
  • Soit  utiliser un captcha existant.

Personnellement je conseille d’utiliser recaptcha. Il fait partie des meilleurs. Il est d’ailleurs utilisé par des plus grands sites comme Google, Microsoft, Twitter et beaucoup d’autres.

Son intégration sur un formulaire s’agit d’un jeu d’enfant. Prends bien ton temps pour consulter le manuel d’utilisation. Si par hasard tu ne réussis pas, on pourra t’aider.

À propos de recaptcha, consulter cette page http://www.google.com/recaptcha


luc Posté à 10h48 le 20 Feb 14

Membre inscrit le 15/02/2014
Messages : 8
Localisation :

je comprend qu'il bloque les spams, des messages non sollicites d'une maniere generale, des messages envoyes par des robots etc...ma question etait comment l'inserer sur un site.


newton Posté à 11h56 le 20 Feb 14

Membre inscrit le 08/08/2013
Messages : 2200
Localisation :

Commences d'abord par inscrire ton site afin d'obtenir la clé (licence). L'inscription c'est sur cette page https://www.google.com/recaptcha/admin/create.  Une fois inscrit, gardes tes clés soigneusement. Tu en auras besoin pour mettre en place le captcha sur ton site.

Télécharges ensuite la librairie PHP de recaptcha ici https://code.google.com/p/recaptcha/downloads/list, décompresses le zip sur le même endroit que ton formulaire à protéger.

Maintenant places ce code dans ton formulaire (entre la balise form) 
 

<?php 
require_once('recaptchalib.php');
$publickey = "cle-publique";
echo recaptcha_get_html($publickey);
?>

Ajoutes enfin ce code dans la partie traitant les données:
 

<?php   
require_once('recaptchalib.php');
$privatekey = "cle-Privee";
$resp = recaptcha_check_answer (
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
if (!$resp->is_valid){
  echo("Vérifies les caractères antispam ");
}
?> 

Remplaces cle-publique et cle-privee par tes vraies clées.
Bonne chance!


luc Posté à 10h52 le 21 Feb 14

Membre inscrit le 15/02/2014
Messages : 8
Localisation :

bonjour,

 

Il y a pas quelque chose de plus simple?


said Posté à 13h00 le 21 Feb 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :

Plus simple et plus efficace que recaptcha ? je ne suis pas sure que ça existe. 
Mais je ne vois ce qui est compliqué dans tout ça. Si tu te concentres, tu arriveras à integrer ce captcha sans difficulté.


dav18 Posté à 09h36 le 17 Mar 14

Membre inscrit le 14/03/2014
Messages : 19
Localisation :
Bonjour,

j'ai fait comme ça est ce que c'est bon ?


<?php 
require_once('recaptchalib.php');
$publickey = "cléf_public";
echo recaptcha_get_html($publickey);
?>
<center><form method="post" action="guestbook.php">  
        Pseudo : <input name="pseudo" maxlength="25" /><br />  
        Message :<br />  
        <textarea name="message" rows="8" cols="55"> </textarea> <br />  
        <input type="submit" value="Envoyer" />  
</form></center> 

</div>

<?php   
require_once('recaptchalib.php');
$privatekey = "clef_privee";
$resp = recaptcha_check_answer (
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
 
if (!$resp-&gt;is_valid) {
  echo("Vérifies les caractères antispam ");
}

?> 


j'ai décompressé  le zip recaptcha-php-1.11.zip   je  ne sait pas si c'est le bon 
newton Posté à 12h57 le 17 Mar 14

Membre inscrit le 08/08/2013
Messages : 2200
Localisation :

<?php 
require_once('recaptchalib.php');
$publickey = "cléf_public";
echo recaptcha_get_html($publickey);
?>
<center><form method="post" action="guestbook.php">  
        Pseudo : <input name="pseudo" maxlength="25" /><br />  
        Message :<br />  
        <textarea name="message" rows="8" cols="55"> </textarea> <br />  
        <input type="submit" value="Envoyer" />  
</form></center> 

</div>

<?php   
require_once('recaptchalib.php');
$privatekey = "clef_privee";
$resp = recaptcha_check_answer (
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
 
if (!$resp-&gt;is_valid) {
  echo("Vérifies les caractères antispam ");
}

?> 


Non ce n'est pas bien fait.
D'abord le premier code doit à l’intérieur du formulaire.
En me referant de ton code, tu peux faire comme ceci:
<form method="post" action="guestbook.php">  
        Pseudo : <input name="pseudo" maxlength="25" /><br />  
        Message :<br />  
        <textarea name="message" rows="8" cols="55"> </textarea> <br />  
        <input type="submit" value="Envoyer" /> 


 Placer ici le premier code
</form>

Le deuxième code dans la partie traitant le données. 
Mais ce qu'il ne faut surtout pas oubliés ce sont les clés.

cle-publique et cle-privee doit être remplacées par les clés (private key et public key) que t'as obtenues en enregistrant ton site. 
Lis bien ce que je dis sur le quatrième post.
dav18 Posté à 13h37 le 17 Mar 14

Membre inscrit le 14/03/2014
Messages : 19
Localisation :
bonjour,


merci pour votre réponse  et au niveau du zip si c'est bien celui-la ( recaptcha-php 1.11 ) car il y en a plusieurs et décompresser j'obtiens ce fichier :

recaptcha-php 1.11

et ses sous dossier :

recaptcha.lib.php
exemple - captcha.php
example-mailhide.php

que j'ai placer sur mon serveur dans le dossier livre d'or et j'ai une page blanche je en sait pas pourquoi merci de votre aide 


bien à vous ! 
newton Posté à 14h18 le 17 Mar 14

Membre inscrit le 08/08/2013
Messages : 2200
Localisation :
Oui c'est le vrai. Si tu as une page blanche ce que tu as fait une erreur quelque part.
Tu dois placer le fichier recaptchalib.php là ou se trouve le fichier de ton livre d'or.
Pour t'assurer que tout va bien, mets seulement le premier code comme je viens de te le dire. le captcha doit s'afficher correctement. 
Et si ça s'affiche, tu mets le deuxième code.


dav18 Posté à 15h21 le 17 Mar 14

Membre inscrit le 14/03/2014
Messages : 19
Localisation :
Effectivement le capcha s'affiche mais a quels niveau je doit mettre le deuxième code merci d'avance  ?


 autre question c'est normale que même sans remplir le captcha en cliquant sur envoyer le commentaire s'affiche quand même peut être qu'il faut le deuxième code je ne sais pas merci pour votre aide


cdlt



newton Posté à 16h50 le 17 Mar 14

Membre inscrit le 08/08/2013
Messages : 2200
Localisation :
 autre question c'est normale que même sans remplir le captcha en cliquant sur envoyer le commentaire s'affiche quand même peut être qu'il faut le deuxième code je ne sais pas merci pour votre aide

Oui c'est normale. C'est le deuxième code qui vérifie si le captcha a été bien saisie.
Tu le place dans la partie qui verifie les données.
Tu peux le placer juste après le formulaire. places-le juste après </form> pour voir.
said Posté à 17h18 le 17 Mar 14

Membre inscrit le 16/09/2012
Messages : 1513
Localisation :
On a fait récemment des mises à jours pour le code du forum. Et certains caractères html ne s'affichent pas correctement. On est entrain de recenser  ces erreurs afin de les corriger.
Apparemment le deuxième code devrait être ceci:

<?php   
require_once('recaptchalib.php');
$privatekey = "cle-Privee";
$resp = recaptcha_check_answer (
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
 
if (!$resp->is_valid) {
  echo("Vérifies les caractères antispam ");
}
?> 



dav18 Posté à 19h29 le 17 Mar 14

Membre inscrit le 14/03/2014
Messages : 19
Localisation :
Tout à fait said le code marche  voici comment je l'ait disposer 



<center><form method="post" action="guestbook.php"> 

        Pseudo : <input name="pseudo" maxlength="25" /><br />  
        Message :<br />  
        <textarea name="message" rows="8" cols="55"> </textarea> <br /><br/> 

      <?php 
require_once('recaptchalib.php');
$publickey = "cle publique";
echo recaptcha_get_html($publickey);
?>

<br/>
        <input type="submit" value="Envoyer" /> 



</form></center> 

<?php   
require_once('recaptchalib.php');
$privatekey = "clef privee";
$resp = recaptcha_check_answer (
$privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]
);
  
if (!$resp->is_valid) {
  echo("Vérifies les caractères antispam ");
}
?> 


en  me fessant  pas d'erreur comme une page blanche , et j'ai  fait un  tester du captcha  en fessant une erreur  dans les chiffres  et le message peut être poster bizarre merci de votre aide !

cdlt
dav18 Posté à 19h31 le 17 Mar 14

Membre inscrit le 14/03/2014
Messages : 19
Localisation :
ps : j'ai oublier de masquer mes clefs privée et publique est ce que un admin peut le faire merci d'avance 

bien à vous !
Samomoi

Page : 1 2