[RESOLU] Web HTML reCaptcha

Petit nouveau ! | 4 Messages

30 mai 2016, 19:51

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>'; } ?>
Modifié en dernier par Lium le 30 mai 2016, 20:15, modifié 1 fois.

Avatar du membre
Mammouth du PHP | 1609 Messages

30 mai 2016, 20:01

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 ?
Développeur web depuis + de 20 ans

Petit nouveau ! | 4 Messages

30 mai 2016, 20:13

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.

Avatar du membre
Mammouth du PHP | 1609 Messages

31 mai 2016, 12:31

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 ?
Développeur web depuis + de 20 ans

Petit nouveau ! | 4 Messages

31 mai 2016, 13:45

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 ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 mai 2016, 14:35

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.
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1609 Messages

31 mai 2016, 15:24

Merci @rthur je ne l'aurais pas dit aussi bien. :)
Développeur web depuis + de 20 ans

Petit nouveau ! | 4 Messages

31 mai 2016, 16:12

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.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

31 mai 2016, 17:18

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 !
Quand tout le reste a échoué, lisez le mode d'emploi...