Page 1 sur 1

Web HTML reCaptcha

Posté : 30 mai 2016, 19:51
par Lium
Bonjour à tous et à toutes,

j'ai un problème que j'essaie de résoudre depuis deux jours malheureusement sans grand succès...

Je tente d'inclure dans une page Web HTML le reCaptcha:
voici le code HTML du formulaire:

Code : Tout sélectionner

<form name="feedback_form" method="post" class="feedback_form"> <input type="text" name="field-name" value="Name" title="Name" class="field-name form_field"> <div class="clear"></div> <input type="text" name="field-email" value="Email" title="Email" class="field-email form_field"> <div class="clear"></div> <input type="text" name="field-subject" value="Subject" title="Subject" class="field-subject form_field"> <div class="clear"></div> <textarea name="field-message" cols="45" rows="5" title="Message" class="field-message form_field">Message</textarea> <div class="clear"></div> <input type="reset" name="reset" id="reset2" value="Clear form" class="feedback_reset"> <input type="button" name="submit" class="feedback_go" id="submit2" value="Send Message!"> <div class="ajaxanswer"></div> <div class="g-recaptcha" data-sitekey="SECRET"></div> </form>
un formulaire très simple, bien entendu j'ai ajouté:

Code : Tout sélectionner

<script src='https://www.google.com/recaptcha/api.js'></script> </head>
maintenant là où ça devient impossible la partie PHP.

Voici le code qui est appelé pour envoyer le mail:

Code : Tout sélectionner

<?php header('Content-Type: text/html; charset=utf-8'); function sendFeedback($feedback_email, $feedback_msg, $feedback_name, $feedback_subject) { $admin_email = "MON MAIL"; if ($feedback_subject == "Subject" || empty($feedback_subject) ) { $subj = "Email from your site"; } else { $subj = $feedback_subject; } $message = " <html> <head> <title>Email from your site</title> </head> <body> <p><a href='mailto:".$feedback_email."'>".$feedback_name."</a> send this message:</p> <p>".$feedback_msg."</p> <p>".$subject."</p> </body> </html> "; $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; if ($feedback_name!=="Name" && $feedback_email!=="Email" && !empty($feedback_email) && !empty($feedback_msg) && !empty($feedback_name) ) { if ($feedback_email == "mail_error") { echo "<span class='ajaxok'>Invalid email address.</span>"; } else { mail($admin_email, $subj, $message, $headers); echo "<span class='ajaxok'>Thank You! Your message has been sent.</span>"; } } else { echo "<span class='ajaxalert'>Please fill the required field.</span>"; } } sendFeedback($_POST['email'], $_POST['message'], $_POST['name'], $_POST['subject']); ?>
D'après la documentation de Google il faut utiliser POST pour récupérer la clé et la comparer avec celle de Google...

J'ai vraiment besoin d'aide j'espère que parmi vous je trouverais la réponse à ma question.

Merci à tous et à toutes. :cry:

PS.

Le script PHP de check devrait ressembler à quelque chose comme ceci:

Code : Tout sélectionner

<?php $email;$comment;$captcha; if(isset($_POST['email'])){ $email=$_POST['email']; }if(isset($_POST['comment'])){ $email=$_POST['comment']; }if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $secretKey = "Put your secret key here"; $ip = $_SERVER['REMOTE_ADDR']; $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip); $responseKeys = json_decode($response,true); if(intval($responseKeys["success"]) !== 1) { echo '<h2>You are spammer ! Get the @$%K out</h2>'; } else { echo '<h2>Thanks for posting comment.</h2>'; } ?>

Re: Web HTML reCaptcha

Posté : 30 mai 2016, 20:01
par Saian
Bonsoir Lium, j'ai peut être raté un truc mais j'ai pas compris où se situe le problème. Tu as un message d'erreur ?

Re: Web HTML reCaptcha

Posté : 30 mai 2016, 20:13
par Lium
Pour le moment il n'y a pas de message d'erreur car je ne sais pas comment implémenter la partie PHP pour vérifier que le résultat saisi par l'utilisateur correspond bien à ce qui est attendu.

Le script PHP devrait ressembler à quelque chose comme ceci:

Code : Tout sélectionner

<?php $email;$comment;$captcha; if(isset($_POST['email'])){ $email=$_POST['email']; }if(isset($_POST['comment'])){ $email=$_POST['comment']; }if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>Please check the the captcha form.</h2>'; exit; } $secretKey = "Put your secret key here"; $ip = $_SERVER['REMOTE_ADDR']; $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secretKey."&response=".$captcha."&remoteip=".$ip); $responseKeys = json_decode($response,true); if(intval($responseKeys["success"]) !== 1) { echo '<h2>You are spammer ! Get the @$%K out</h2>'; } else { echo '<h2>Thanks for posting comment.</h2>'; } ?>
Malheureusement je n'ai aucune idée de la façon de le fusionner avec le script précédent qui envoie le mail.

Re: Web HTML reCaptcha

Posté : 31 mai 2016, 12:31
par Saian
Re bonjour Lium, tu dis que tu essaies de résoudre le problème depuis 2 jours. Qu'as tu essayé de faire durant ces 2 jours ?

Re: Web HTML reCaptcha

Posté : 31 mai 2016, 13:45
par Lium
Re bonjour Lium, tu dis que tu essaies de résoudre le problème depuis 2 jours. Qu'as tu essayé de faire durant ces 2 jours ?
j'ai suivi les deux tutorial suivant:
http://fr.jeffprod.com/blog/2014/instal ... n-php.html
https://codeforgeek.com/2014/12/google- ... -tutorial/
Mais comme je ne connais pas le PHP je suis arrivé à rien :(
Cependant je ne comprends pas vraiment l'objet de votre question ?

Re: Web HTML reCaptcha

Posté : 31 mai 2016, 14:35
par @rthur
Bonjour,
Cependant je ne comprends pas vraiment l'objet de votre question ?
C'est très simple, PHPfrance est un forum d'entraide où nous sommes là pour t'aider à faire ce que tu veux, mais nous ne sommes pas là pour te donner la réponse directement car sinon tu vas juste la copier-coller sans comprendre et tu seras incapable de le refaire la prochaine fois.

D'où la question de Saian pour essayer de comprendre où tu bloques : Qu'as tu essayé, qu'est-ce qui ne marche pas, quels sont les messages d'erreurs rencontrés :)


Les 2 tutos que tu indiques ont l'air plutôt bien fait, est-ce que tu les as suivi jusqu'au bout et est-ce que tu as réussi à les faire fonctionner ?
A l'issu d'un de ces tutos, tu devrait avoir un script qui te dit si la captcha est correcte ou pas.

Quand ce sera le cas, il te suffira de demander l'envoi du mail d'info que dans le cas où la vérification de la captcha a fonctionner.
En clair : Faire appel à ta fonction sendFeedback() quand la captcha est bonne.

Re: Web HTML reCaptcha

Posté : 31 mai 2016, 15:24
par Saian
Merci @rthur je ne l'aurais pas dit aussi bien. :)

Re: Web HTML reCaptcha

Posté : 31 mai 2016, 16:12
par Lium
Bonjour,
Cependant je ne comprends pas vraiment l'objet de votre question ?
C'est très simple, PHPfrance est un forum d'entraide où nous sommes là pour t'aider à faire ce que tu veux, mais nous ne sommes pas là pour te donner la réponse directement car sinon tu vas juste la copier-coller sans comprendre et tu seras incapable de le refaire la prochaine fois.
Comme je l'ai dit plus haut "Mais comme je ne connais pas le PHP je suis arrivé à rien"
La réponse m'a été donné sur le forum US, 2 min.
Super simple juste copier la partie du code que j'ai déjà écrit de mon premier post, je vous laisse tranquillement débattre, je suis désolé de m'être trompé sur le but de votre forum et par là même de vous avoir importuné.
Problème résolu par les Américains.

Re: Web HTML reCaptcha

Posté : 31 mai 2016, 17:18
par @rthur
Ah mais tu ne nous as pas importuné du tout :)
Mais effectivement tu t'es trompé de site si tu voulais juste une réponse à copier-coller.
Bonne continuation à toi !